March 20, 2008
Dami- A Database Migration Tool
We are happy to release our DataBase migration tool to open source.https://sourceforge.net/projects/dami
Database Migration Tool (DAMI)is a migration tool used for transporting data between databases. It transfers data from an existing database with a old structure to a new database with new structure.
January 23, 2008
www.javafxworld.net - First community Portal for JavaFX
About JavaFXThe JavaFX product family leverages the Java platform's write-once-run-anywhere portability, application security model, ubiquitous distribution and enterprise connectivity
JavaFXWorld.net
Want to share first community portal for people who are interested on JavaFX technologies. (www.javafxworld.net)
Here you can Post your own blog , video or tutorial and rate others post.
This can make a good community of contributers on JavaFX technologies.
It has following features.
* Share, Discuss, Rate, Tell to friend, Comment any JavaFX post
* Add any article related to JavaFX on del.icio.us,,digg, reddit,,facebook, yahoo bookmarks.
* Subscribe to Latest news on JavaFX - Delivered daily .
* You can make a group of friends who are working on JavaFX
* Get the Latest Books on JavaFX
* JavaFX Demos, tutorials, books, JavaFX articles, video blogs, JavaFX news and More ...
December 18, 2007
Christmas Deals @ www.chooseyourdeals.com
A special Channel for Christmas Deals and discounts @ chooseyourdeals.com is open.Post a deals and win surprise gifts.
More to come in coming days.
HOSTGATOR WEB HOSTING - 20% Off
Christmas Deals from Logos! : 25% off
Up to 50% discount on these select gifts and experiences from lastminute.com
Christmas holidays - Extra 50 euro Off - Christmas Deal
Small Paul Lego Space Hoody for Boys - save 26%
Huge Discounts from REI-Outlet.com - 60% Off
JCPenney department - Save 30% to 60%
for Christmas Deals 2007 one stop destination www.chooseyourdeals.com
November 27, 2007
QTrakPro- Php Based TimeSheet and Project Managment Solution
Q-TrackPro creates a paperless environment supporting an organization's need in reporting, reviewing and managing a critical business resource... employee time.Q-TrackPro is a web-based timesheet and time management application service or an installable software product that uses any client-side operating system and a web browser. No need to invest in new hardware or additional client-side software. Being a total web-based solution, you can enter and track time logged against user defined projects and tasks from anywhere in the world, at anytime. You can even approve timesheets from remote locations.
This open source script can be found at
http://www.zycomm.net/QTrack-Pro
You can write to dev @ zycomm .net for custom Solutions.
ChooseYourDeals.com Web2.0 Portal
ChooseYourDeals.com, is a web2.0 interactive Portal(Still in Beta,Lots of features still need to be added), Here you can Post the deals which have Discounts, offers, clearance sales,gift coupons where users save money ... just any deal that appeals to a shopper are welcome.It is a user community portal where users help the community to choose a deal and save Money.
What you can do?.
* Register * Review and vote Deals * Post Deals * Spread the word(Fwd mail) * Let me know if you find any bugs or errors.* Send me your feedback * Click Ads :)
We will be adding more channels Like Amazing Deals,Property Deals,Stock Deals.
This will be one stop Gateway for all Deals and discounts. People will sure love to visit this to see if there are any deals for what they are trying to buy.
November 21, 2007
Developing Generic Approval Module
The Approval module is used for approving the transactions. Here , user is storing all the transactions into one temporary table which is general to all types of transactions. The transactions which are stored in the temporary table are yet to be approved. For approving these transactions we are providing Approvals part. Approval is nothing but, storing the transactions into the respective tables in which the transactions actually stored. During both situations we are using the approvals, one while adding new transactions and one more while updating the already approved transaction. Here in this application we are maintaining the status of the operation (i.e insertion or updation). It will help for identifying the fact that whether the approving transaction is new one or already existing one, which is updating through approval.For Development of this application we have used the MVC architecture of J2EE concept. That is Struts Frame Work. The approval module is the general one for all type of transactions, means it’s not necessary to provide separate interface for different transactions, we can reuse the existing one for all types of transactions. And also we are maintaining a single table for storing all types of transactions before approval, this means it saves the time and space. After approving we are storing the respective transaction into the respective table.
Approval module prevents submitting the wrong entry into the actual table directly. So before approval only we will come to know whether the entered transaction is correct or not, if it’s wrong we are not going to approve that one, so we are not entering the wrong data into the database.
Below we are providing the flow of Approval module with one small example.
If you go through these snapshots you can easily come to know the advantage of the application.
Screen to view transcations to be approved,
Screens to approve the Transactions,
1)Transmaster
The fields in this table are….
i) ACCNO -> Account number
ii) SDOCODE -> SDO Code
iii) TABLENAME -> This is the actual table the records to be stored.
iv) LINCID -> The link id which connects the two tables records.
v) TRANSDATE -> Transaction date which is system date..
vi) OPERATION -> this gives whether it’s Insertion(I) or Updation(U).
vii) TRANSID -> Transaction ID used for uniqueness of the record.
viii) APPSTATUS -> Application status, shows whether approved or not.
ix) RECID -> The actual Record ID which is used while Updation.
x) IDFIELDNAME -> This is the field name of the ID field.
2)Transmaster_detail:
This table stores multiple values with the corresponding field names also…
The fields in this table are:…..
i) FIELDNAME -> this gives the field names of the actual table.
ii) OLDVALUE-> The value which is already stored in the actual table.
iii) NEWVALUE->The value which to be newly added..
iv) LINCID-> link id which connects to Transmaster table
v) ID-> this is the record id of this table.
Here we are providing the some API’s which we have developed for this module…..
==========================================================
//The API which shows the approval transaction details..
public ActionForward showTransData(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
ApproveTransDataForm approveTransDataForm = (ApproveTransDataForm) form;
String linkid=null;
String accno="",sdoCode="",transdate="",tableName="",operation="";
String id=request.getParameter("id");
ArrayList a=new ArrayList();
String flag1=null,flag2=null;
rs=ad.selectByID("TRANSID", id, "TRANSMASTER");
try
{
if(rs.next())
{
linkid=rs.getString("LINCID");
operation=rs.getString("OPERATION");
accno=rs.getString("ACCNO");
sdoCode=rs.getString("SDOCODE");
transdate=CobraUtils.display(rs.getDate("TRANSDATE"));
tableName=rs.getString("TABLENAME");
approveTransDataForm.setAccountNo(accno);
approveTransDataForm.setSdoCode(sdoCode);
approveTransDataForm.setTransDate(transdate);
approveTransDataForm.setTableName(tableName);
approveTransDataForm.setOperation(operation);
approveTransDataForm.setLinkId(linkid);
approveTransDataForm.setTransId(id);
}
rs.close();
rs=ad.selectByID("LINCID", linkid, "TRANSMASTER_DETAIL");
String trID="",oldval="";
while(rs.next())
{
ApproveTransDataForm approveTDForm=new ApproveTransDataForm();
approveTDForm.setFieldName(rs.getString("FIELDNAME"));
if(operation.equals("I"))
{
approveTDForm.setNewValue(rs.getString("NEWVALUE"));
trID=rs.getString("ID");
approveTDForm.setTrid(trID);
flag1="NEW";
request.setAttribute("NEW", flag1);
}
if(operation.equals("U"))
{
oldval=rs.getString("OLDVALUE");
approveTDForm.setOldValue(oldval);
approveTDForm.setNewValue(rs.getString("NEWVALUE"));
trID=rs.getString("ID");
approveTDForm.setTrid(trID);
flag2="OLD";
request.setAttribute("OLD", flag2);
}
a.add(approveTDForm);
}rs.close();
}
catch (Exception e) {
CobraUtils.writeLogFile(e);
// TODO: handle exception
}
request.setAttribute("details", a);
return mapping.findForward("display");
}
//ends here……………………
---------------------------------------------------------------------------------------------
//The API which is used for approving the transaction……
public ActionForward Commit(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
ApproveTransDataForm approveTransDataForm = (ApproveTransDataForm) form;// TODO Auto-generated method stub
String[] arr=null;
String accNum="",sdCode="",trDate="",opern="",tabName="",linkid="";
int appStatus=0;
accNum=approveTransDataForm.getAccountNo();
sdCode=approveTransDataForm.getSdoCode();
trDate=approveTransDataForm.getTransDate();
opern=approveTransDataForm.getOperation();
tabName=approveTransDataForm.getTableName();
linkid=approveTransDataForm.getLinkId();
CobraUtils.writeLogFile("link id===>"+linkid);
rs=ad.selectByID("LINCID", linkid, "TRANSMASTER_DETAIL");
String newRecord="",updateRecord="",test="",newRec="",testVal="",insQuery="",updRec="",updQuery="";
String upRecd="";
try
{
newRecord="insert into "+tabName+"(SDOCODE,ACCNO";
test=" values('"+sdCode+"','"+accNum+"'";
updateRecord="update "+tabName+" set SDOCODE='"+sdCode+"',ACCNO='"+accNum+"'";
String idFieldName="",idFieldValue="";
while(rs.next())
{
if(opern.equals("I"))
{
CobraUtils.writeLogFile("id====>"+rs.getString("ID"));
newRec=newRec+","+rs.getString("FIELDNAME");
if(rs.getString("FIELDNAME").equals("DATE1")||rs.getString("FIELDNAME").equals("RDATE")||
rs.getString("FIELDNAME").equals("CHQDDDATE")||rs.getString("FIELDNAME").equals("DATESTAMP")||
rs.getString("FIELDNAME").equals("REFDATE")||rs.getString("FIELDNAME").equals("EFFDATE")||
rs.getString("FIELDNAME").equals("DEFDATE")||rs.getString("FIELDNAME").equals("SCODATE")||
rs.getString("FIELDNAME").equals("DISSCONDATE")||rs.getString("FIELDNAME").equals("CONNDATE")||
rs.getString("FIELDNAME").equals("RECONDATE")||rs.getString("FIELDNAME").equals("CDATE"))
{
if(rs.getString("NEWVALUE")==null)
{
testVal=testVal+",''";
}
else
{
testVal=testVal+",to_date('"+rs.getString("NEWVALUE")+"','dd/MM/yyyy')";
}
}
else
{
if(rs.getString("NEWVALUE")==null)
{
testVal=testVal+",''";
}
else
{
testVal=testVal+",'"+rs.getString("NEWVALUE")+"'";
}
}
}
if(opern.equals("U"))
{
arr=approveTransDataForm.getCheckBox();
for(int i=0;i
if(arr[i].equals(rs.getString("ID")))
{
if(rs.getString("FIELDNAME").equals("DATE1")||rs.getString("FIELDNAME").equals("RDATE")||
rs.getString("FIELDNAME").equals("CHQDDDATE")||rs.getString("FIELDNAME").equals("DATESTAMP")||
rs.getString("FIELDNAME").equals("REFDATE")||rs.getString("FIELDNAME").equals("EFFDATE")||
rs.getString("FIELDNAME").equals("DEFDATE")||rs.getString("FIELDNAME").equals("SCODATE")||
rs.getString("FIELDNAME").equals("DISSCONDATE")||rs.getString("FIELDNAME").equals("CONNDATE")||
rs.getString("FIELDNAME").equals("RECONDATE")||rs.getString("FIELDNAME").equals("CDATE"))
{
upRecd=rs.getString("FIELDNAME")+"=to_date('"+rs.getString("NEWVALUE")+"','dd/MM/yyyy')";
}
else
{
upRecd=rs.getString("FIELDNAME")+"='"+rs.getString("NEWVALUE")+"'";
}
updRec=updRec+","+upRecd;
}
else
{
CobraUtils.writeLogFile("this record not checked..");
}
}
CobraUtils.writeLogFile("updation...");
}
}
rs.close();
HttpSession sess=request.getSession();
String user=(String)sess.getAttribute("user");
if(opern.equals("I"))
{
newRecord=newRecord+newRec+")";
test=test+testVal+")";
insQuery=newRecord+test;
appStatus=1;
CobraUtils.writeLogFile("query====>"+insQuery);
int i=ad.insertApprovalDetails(insQuery);
int j=ad.setTransmaster(linkid,appStatus);
if(i>=1 && j>=1)
{
CobraUtils.userAction(user,"commiting Record");
approveTransDataForm.setMessage("Inserted Successfully");
}
else
{
approveTransDataForm.setMessage("Error! In Inserting Record");
}
}
if(opern.equals("U"))
{
rs=ad.selectByID("LINCID", linkid, "TRANSMASTER");
if(rs.next())
{
idFieldName=rs.getString("IDFIELDNAME");
idFieldValue=rs.getString("RECID");
}
rs.close();
appStatus=1;
updQuery=updateRecord+updRec+" where "+idFieldName+"='"+idFieldValue+"'";
int i=ad.updateApprovalDetails(updQuery);
int j=ad.setTransmaster(linkid,appStatus);
if(i>=1 && j>=1)
{
CobraUtils.userAction(user,"commiting Record");
approveTransDataForm.setMessage("Updated Successfully");
}
else
{
approveTransDataForm.setMessage("Error! In Updating Record");
}
CobraUtils.writeLogFile("updation..."+updQuery);
}
}
catch (Exception e)
{
CobraUtils.writeLogFile(e);
CobraUtils.writeLogFile("Error while commiting..."+e.getMessage());
e.printStackTrace();
}
return mapping.findForward("success");
}
//ends here………………
--------------------------------------------------------------------------------------------------
//Util methods……
//The method which is used for Validating the Account Number….
public static boolean validateAccNo(String accNo,String sdoCode)
{
DAOFactory dao = DAOFactory.getDAOFactory(DAOFactory.ORACLE);
AdminDAO ad = dao.getAdminDAO();
ResultSet rs=null;
rs=ad.selectMasterDetails(accNo,sdoCode);
String dbAcno = "";
String dbSdono="";
try
{
while(rs.next())
{
dbAcno=rs.getString("ACCNO");
dbSdono=rs.getString("SDOCODE");
}
}
catch (SQLException e)
{
CobraUtils.writeLogFile("Inside validateAccNo(String accNo,String sdoCode) method in CobraUtils class");
e.printStackTrace();
}
CobraUtils.writeLogFile("values in utils==>"+dbAcno+","+dbSdono+","+accNo+","+sdoCode);
if((dbAcno.equals(accNo)) && (dbSdono.equals(sdoCode)))
{
return true;
}
else
{
return false;
}
}
//ends here….
-----------------------------------------------------------------------------------------
//The method which is used to take only changed values for Approval while updating….
public static String[] getModifiedValues(String[] fName,String[] mValue,String tableName,String fieldName,String recordID)
{
DAOFactory dao = DAOFactory.getDAOFactory(DAOFactory.ORACLE);
AdminDAO ad = dao.getAdminDAO();
int len=mValue.length;
String[] nValue=new String[len];
ResultSet rs1=null;
rs1=ad.selectByID(fieldName, recordID, tableName);
try
{
if(rs1.next())
{
for(int i=0;i
String var="";
if(rs1.getString(fName[i]) == null || rs1.getString(fName[i]).equals("null")||rs1.getString(fName[i]).equals(null)){
var="";
}
else
{
if(fName[i].equals("DATE1")||fName[i].equals("RDATE")||
fName[i].equals("CHQDDDATE")||fName[i].equals("DATESTAMP")||
fName[i].equals("REFDATE")||fName[i].equals("EFFDATE")||
fName[i].equals("DEFDATE")||fName[i].equals("SCODATE")||
fName[i].equals("DISSCONDATE")||fName[i].equals("CONNDATE")||
fName[i].equals("RECONDATE")||fName[i].equals("CDATE"))
{
var=CobraUtils.display(rs1.getDate(fName[i]));
}
else
{
var=rs1.getString(fName[i]);
}
}
if(mValue[i].equals(var))
{
nValue[i]="N";
}
else
{
if(rs1.getString(fName[i])==null)
{
nValue[i]="";
}
else
{
if(fName[i].equals("DATE1")||fName[i].equals("RDATE")||
fName[i].equals("CHQDDDATE")||fName[i].equals("DATESTAMP")||
fName[i].equals("REFDATE")||fName[i].equals("EFFDATE")||
fName[i].equals("DEFDATE")||fName[i].equals("SCODATE")||
fName[i].equals("DISSCONDATE")||fName[i].equals("CONNDATE")||
fName[i].equals("RECONDATE")||fName[i].equals("CDATE"))
{
nValue[i]=CobraUtils.display(rs1.getDate(fName[i]));
}
else
{
nValue[i]=rs1.getString(fName[i]);
}
//nValue[i]=rs1.getString(fName[i]);
}
}
}
}
rs1.close();
}
catch (Exception e)
{
CobraUtils.writeLogFile("Inside getModifiedValues===>"+e.getMessage());
e.printStackTrace();
}
return nValue;
}
//ends here………..
----------------------------------------------------------------------------------------------------
//Database methods……..
//The method which is used for Inserting the records into one table which are to be used while approving…
public int insertApprovalDetails(String insQuery) {
int flag = 0;
String sql = insQuery;
CobraUtils.writeLogFile("Query in insertApprovalDetails===>" + sql);
try {
st = conn.createStatement();
flag = st.executeUpdate(sql);
if (flag > 0)
TransactionControlDao.commitTransaction(conn);
else
TransactionControlDao.rollbackTransaction(conn);
} catch (SQLException sqle) {
CobraUtils.writeLogFile("Error in insertApprovalDetails in OracleAdminFactory (SQLException Block)");
sqle.printStackTrace();
} catch (Exception e) {
CobraUtils.writeLogFile(e);
CobraUtils.writeLogFile("Error in insertApprovalDetails in OracleAdminFactory (Exception Block)");
e.printStackTrace();
}
return flag;
}
//ends here..
----------------------------------------------------------------------------------------------------
//The method used while updating the approving record….
public int updateApprovalDetails(String updQuery) {
int flag = 0;
String sql = updQuery;
CobraUtils.writeLogFile("Query in updateApprovalDetails===>" + sql);
try {
st = conn.createStatement();
flag = st.executeUpdate(sql);
if (flag > 0)
TransactionControlDao.commitTransaction(conn);
else
TransactionControlDao.rollbackTransaction(conn);
} catch (SQLException sqle) {
CobraUtils.writeLogFile("Error in updateApprovalDetails in OracleAdminFactory (SQLException Block)");
sqle.printStackTrace();
} catch (Exception e) {
CobraUtils.writeLogFile(e);
CobraUtils.writeLogFile("Error in updateApprovalDetails in OracleAdminFactory (Exception Block)");
e.printStackTrace();
}
return flag;
}
//ends here……
========================================================
-BY Shidram BJ
November 20, 2007
Real Estate Portal Software
A Real Estate Portal allows you to launch powerful and professional looking real estate portals with rich functionalities for the private sellers, buyers and real estate agents to list properties for sale or rent, search in the database, show featured ads and many others. The private sellers can manage their ads at any time through their personal administration space.The product includes special functionalities for real estate agents (to list and manage multiple ads) and affiliates (to earn commissions from the earnings from property ads posted through their links). The software should also provide the customers with the Utilities like EMI Calculators and Area Calculators etc. It should also provide the real estate FAQ to help customers answer some of their basic questions.
A Locality based search engine or a interact map for searching a properties would be a great advantage for the users the the site.
At Zycomm we have developed such a portal, the demo of which you can see here.
http://www.zycomm.net/PropertyPortal/source/index.php
It is missing interactive map based search options but the location based search would be helpful for the user.
It has many features such as FAQs, Directory Listing , Franchise information, Investors forum etc which will be a great deal of advantage for Real Estate owners.
The software is offered Free as it is and we also offer customization services.
you can write to dev @ zycomm .net for details.
November 17, 2007
Spot Billing
Spot billing is a revolutionary solution devised with an intention to enable the power distribution and water distribution companies to streamline and implement an effective metering & billing system, improve cash flows and to make the processes customer centric.Spot Billing is being use in various domains like soft drink supply companies, Telecoms companies to distribute currencies and also in public transportation system where tickets are generated using spot billing solutions.
In Spot Billing following steps are followed,
# Hand-held computer is pre loaded with a set of records / information based on which the meter data needs to be collected. This includes parameters like consumer Number, House Number, Meter number, Previous Reading etc.
# The meter reader moves around collecting the required data. He can enter the current reading and generate Bills on spot and give it to consumers.
# At the end of the day, the meter reader downloads the data into a Computer, where the master data base gets updated.
# Using the updated data base, the Computer can generate the various MIS reports as asked by the Distribution companies
Currently in INDIA BCITS is offering Spot Billing solutions on BOO and BOOT basis. Zycomm is developing software required in Spot billing solutions.
BCITS offers a wide range of services in Spot Billing to various Government and Public or Private Sector Undertakings. BCITS has the expertise to implement the Total Revenue Management with Spot Billing. We are currently implementing the Solution to Various State Electricity Boards in Karnataka, Rajasthan and Andra Pradesh. The Solutions are on the Build Own and Operate Basis. A typical Project involves computerization of all the Consumer records, Deployment of Necessary Servers and Computer Systems, Deployment of the Customized Software Solution, providing of Manpower to do the day to day transactions, Providing of HHD and Manpower for Meter Reading, issue of Bills on the Spot , manning of Cash Collection Centers.
You can email dev @ zycomm . net for spot billing solutions.
References
------------------
http://www.picopeta.com/showcase/spotbilling.php
Our Spot Billing implementation in Jaipur on news,
www.indiaenews.com/business/20061129/30436.htm
-----------
November 14, 2007
Java date util methods
These are the simple Date methods which can be used when you want to add number of days or months to the given date or get the difference between two dates by either months or days./***************Date ADD AND DIFFERENCE FUNCTION******************/
/**
* Add number of days or months to the given date
* @param token should be either "m" for months or "d" for dates
*/@param date1 given date
*/@param tokenVal number of months or days to be added
*/
public Date dateAdd(String token,Date date1,int tokenVal){
Date addedDate=new Date();
Calendar c1 = Calendar.getInstance();
c1.setTime(date1);
if(token.equalsIgnoreCase("d")){
c1.add(Calendar.DATE,tokenVal);
}else if(token.equalsIgnoreCase("m")){
c1.add(Calendar.MONTH,tokenVal);
}
addedDate=c1.getTime();
return addedDate;
}
/**
* Gets the difference between two dates
* @param token should be either "m" for months or "d" for dates
*/@param date1 given Date date1
*/@param date2 given Date date1
*/
public int dateDiff(String token,Date date1,Date date2){
int diff=0;
//different date might have different offset
Calendar cal1=Calendar.getInstance();
Calendar cal2=Calendar.getInstance();
cal1.setTime(date1);
long ldate1 = date1.getTime() + cal1.get(Calendar.ZONE_OFFSET) + cal1.get(Calendar.DST_OFFSET);
if(date2==null){
cal2.setTime(new Date());
}else{
cal2.setTime(date2);
}
long ldate2 = date2.getTime() + cal2.get(Calendar.ZONE_OFFSET) + cal2.get(Calendar.DST_OFFSET);
// Use integer calculation, truncate the decimals
int hr1 = (int)(ldate1/3600000); //60*60*1000
int hr2 = (int)(ldate2/3600000);
int days1 = (int)hr1/24;
int days2 = (int)hr2/24;
int dateDiff = days2 - days1;
int yearDiff = cal2.get(Calendar.YEAR) - cal1.get(Calendar.YEAR);
int monthDiff = yearDiff * 12 + cal2.get(Calendar.MONTH) - cal1.get(Calendar.MONTH);
if(token.equals("d")){
diff=dateDiff;
}else if(token.equals("m")){
diff= monthDiff;
}
return diff;
}
Leave a comment if you want to add more info or have any questions about these util functions.
November 13, 2007
Hosted SVN
We are using the hosted SVN from last couple of months and it is really good.There are lots of companies, which are providing hosted SVN.
SVN is a version control system. It has advanced features compared to CVS. We can also get the plug-ins for eclipse.
You need SVN clients to access the files in SVN.
These are the clients, which you can think of,
TortoiseSVN - A Subversion client, implemented as a windows shell extension
http://tortoisesvn.tigris.org/
eSvn - cross-platform QT-based GUI frontend to Subversion
http://esvn.umputun.com/
There are lots other, which you can find here,
http://subversion.tigris.org/links.html#clients
When it comes to choosing hosted SVN providers there are couple of options and it depends upon needs of individuals. But there are couple of free ones which are available for open source software developers,
Google allows you to host your projects on Google Code for free. However, Google Code is intended only for open-source projects. Hosting your client work there probably isn't a good idea.
Gna
Similar to Google Code, Gna offers Subversion hosting along with a bunch of other services for free for "free projects".
DevjaVu
DevjaVu provides free Subversion hosting but also includes Trac and doesn't have any open-source limitations. Any project can be hosted on DevjaVu. The downfall: It's still in beta and you need an invite to be able to sign up.
If you are looking for commercial grade SVN hosting which are good for small and medium size companies,
CVSDude
CVSDude provides both CVS — another version control system — and Subversion hosting. They have a free account for hosting a single project under 10MB and includes email updates, which would be handy working with a team in different locations.
Wush.net
Wush.net starts at $20/quarter for their basic package of 1 repo. This is very good and provides Trac for Pro Plans.
Hosted-project.com
Hosted-projects.com comes with unlimited repo's and developers along with Trac, even on their basic package of $7/month. I think you have to take the other plans if you want to really use their services.
We are hosted on Wush.net and pretty much happy with thier services and Trac is really good for having a wiki + project management tool.
