// 2012-10-23 johnpfeiffer
// TODO: unit tests
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.util.ArrayList;
public class NetworkAccountDAO
{
private static final String CLASSVERSION = "0.6";
protected String DATABASENAME = "networkid";
protected String TABLENAME = "PstNetworkAccount";
private static final String HEADEROID = "oid";
private static final String HEADERACCOUNTID = "accountId";
private static final String HEADERNAME = "name";
private static final String HEADERLOGINURL = "loginUrl";
private static final String HEADERLOGOUTURL = "logoutUrl";
private static final String HEADERCREATEDATETIME = "createDatetime";
private static final String HEADERDISABLED = "disabled";
private static final String HEADERDELETED = "deleted";
private static final String HEADERINTERNALAUTHENTICATIONENABLED = "internalAuthenticationEnabled";
private static final String HEADEREXTERNALAUTHENTICATIONENABLED = "externalAuthenticationEnabled";
private static final String HEADERREPOSITORYMANAGERSERVICEID = "repositoryManagerServiceId";
private final String query = "select * from " + DATABASENAME + "." + TABLENAME + ";";
private ArrayList <NetworkAccount> networkAccounts;
private long networkAccountCount = 0;
String resultOid;
String resultAccountId;
String resultName;
String resultLoginUrl;
String resultLogoutUrl;
Timestamp resultCreateDatetime;
short resultDisabled;
short resultDeleted;
short resultInternalAuthenticationEnabled;
short resultExternalAuthenticationEnabled;
String resultRepositoryManagerServiceId;
NetworkAccountDAO( Connection c )
{
if( c != null )
{
try
{
networkAccounts = new ArrayList <NetworkAccount>();
populateNetworkAccount( c );
}catch( SQLException sqle )
{
System.err.println( sqle.getMessage() );
}catch( Exception e )
{
e.printStackTrace();
}
}else
{
throw new IllegalArgumentException( "connection or oid is null or empty" );
}
}
protected String getVersion()
{
return CLASSVERSION;
}
protected ArrayList <NetworkAccount> getList()
{
return networkAccounts;
}
protected void populateNetworkAccount( Connection c ) throws SQLException
{
System.out.println( "DEBUG: " + query );
PreparedStatement pstmt = null;
ResultSet rs = null;
try
{
pstmt = c.prepareStatement( query );
rs = pstmt.executeQuery();
ResultSetMetaData rsmeta = rs.getMetaData();
int columnCount = rsmeta.getColumnCount();
System.out.println( "DEBUG: columnCount = " + columnCount );
while( rs.next() )
{
resetResultVariables();
resultOid = rs.getString( HEADEROID );
resultAccountId = rs.getString( HEADERACCOUNTID );
resultName = rs.getString( HEADERNAME );
resultLoginUrl = rs.getString( HEADERLOGINURL );
resultLogoutUrl = rs.getString( HEADERLOGOUTURL );
resultCreateDatetime = rs.getTimestamp( HEADERCREATEDATETIME );
resultDisabled = rs.getShort( HEADERDISABLED );
resultDeleted = rs.getShort( HEADERDELETED );
resultInternalAuthenticationEnabled = rs.getShort( HEADERINTERNALAUTHENTICATIONENABLED );
resultExternalAuthenticationEnabled = rs.getShort( HEADEREXTERNALAUTHENTICATIONENABLED );
resultRepositoryManagerServiceId = rs.getString( HEADERREPOSITORYMANAGERSERVICEID );
networkAccountCount++;
networkAccounts.add( new NetworkAccount( resultOid , resultAccountId , resultName , resultLoginUrl , resultLogoutUrl , resultCreateDatetime , resultDisabled ,
resultDeleted , resultInternalAuthenticationEnabled , resultExternalAuthenticationEnabled , resultRepositoryManagerServiceId ) );
} // end while
}finally
{
System.out.println( "DEBUG: networkAccountCount = " + networkAccountCount );
if( pstmt != null )
{
pstmt.close();
}
if( rs != null )
{
rs.close();
}
}
}
private void resetResultVariables()
{
resultOid = null;
resultAccountId = null;
resultName = null;
resultLoginUrl = null;
resultLogoutUrl = null;
resultCreateDatetime = null;
resultDisabled = -1;
resultDeleted = -1;
resultInternalAuthenticationEnabled = -1;
resultExternalAuthenticationEnabled = -1;
resultRepositoryManagerServiceId = null;
}
} // end class