Advertisement
Guest User

Untitled

a guest
May 11th, 2017
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 9.44 KB | None | 0 0
  1. package ssc.jdbc.entities;
  2.  
  3. import java.sql.PreparedStatement;
  4. import java.sql.ResultSet;
  5. import java.sql.SQLException;
  6. import java.util.ArrayList;
  7.  
  8. import ssc.jdbc.Database;
  9. import ssc.jdbc.Utility;
  10.  
  11. public class SchoolMember extends Entity {
  12.    
  13.     private String _nameFirst;
  14.     private String _nameLast;
  15.     private String _username;
  16.     private int    _universityId;
  17.     private String _roleName;
  18.     private String _password;
  19.     private String _saltString;
  20.    
  21.     private SchoolMember(boolean isNew, String firstName, String lastName, String userName, int universityId, String roleName, String password, String saltString) {
  22.         isNew         = false;
  23.         _nameFirst    = firstName;
  24.         _nameLast     = lastName;
  25.         _username     = userName;
  26.         _universityId = universityId;
  27.         _roleName     = roleName;
  28.         _password     = password;
  29.         _saltString   = saltString;
  30.     }
  31.     public SchoolMember(String firstName, String lastName, String userName, int universityId, String roleName, String password, String saltString) {
  32.         isNew         = true;
  33.         _nameFirst    = firstName;
  34.         _nameLast     = lastName;
  35.         _username     = userName;
  36.         _universityId = universityId;
  37.         _roleName     = roleName;
  38.         _password     = password;
  39.         _saltString   = saltString;
  40.     }
  41.    
  42.     public SchoolMember() {
  43.     }
  44.    
  45.     public String getFirstName() { return _nameFirst; }
  46.     public void setFirstName(String value) { _nameFirst = value; isDirty = true; }
  47.    
  48.     public String getLastName() { return _nameLast; }
  49.     public void setLastName(String value) { _nameLast = value; isDirty = true; }
  50.    
  51.     public String getUserName() { return _username; }
  52.     public void setUserName(String value) { _username = value; isDirty = true; }
  53.    
  54.     public int getUniversityID() { return _universityId; }
  55.     public void setUniversityID(int value) { _universityId = value; isDirty = true; }
  56.    
  57.     public String getRoleName() { return _roleName; }
  58.     public void setRoleName(String value) { _roleName = value; isDirty = true; }
  59.    
  60.     public String getPassword() { return _password; }
  61.     public void setPassword(String value) { _password = value; isDirty = true; }
  62.    
  63.     public String getSaltString() { return _saltString; }
  64.     public void setSaltString(String value) { _saltString = value; isDirty = true; }
  65.    
  66.     ///////////////////////////
  67.    
  68.     public boolean authenticate(String password) {
  69.        
  70.         String concat = password + _saltString;
  71.        
  72.         String hash = Utility.SHA1( concat );
  73.        
  74.         return _password.equalsIgnoreCase( hash );
  75.     }
  76.    
  77.     ///////////////////////////
  78.    
  79.     public String getFullName() {
  80.        
  81.         return _nameLast + ", " + _nameFirst;
  82.     }
  83.    
  84.     public @Override String toString() {
  85.        
  86.         return getFullName() + " (" + _roleName + ": " + _universityId + ")";
  87.        
  88.     }
  89.    
  90.     public static SchoolMember isCached(int universityId) {
  91.        
  92.         for(Entity e : Database.getInstance().getCache()) {
  93.            
  94.             if( e instanceof SchoolMember ) {
  95.                
  96.                 SchoolMember s = (SchoolMember)e;
  97.                 if( s.getUniversityID() == universityId ) return s;
  98.             }
  99.         }
  100.        
  101.         return null;
  102.     }
  103.    
  104.     public static SchoolMember isCached(String username) {
  105.        
  106.         for(Entity e : Database.getInstance().getCache()) {
  107.            
  108.             if( e instanceof SchoolMember ) {
  109.                
  110.                 SchoolMember s = (SchoolMember)e;
  111.                 if( s.getUserName().toLowerCase().equals(username.toLowerCase()) ) return s;
  112.             }
  113.         }
  114.        
  115.         return null;
  116.     }
  117.    
  118.     public @Override boolean match(Object[] query) {
  119.        
  120.         String roleName  = (String)query[0];
  121.         String nameQuery = (String)query[1];
  122.        
  123.         boolean match = true;
  124.        
  125.         if( roleName != null ) {
  126.            
  127.             match = strMatch( _roleName, roleName );
  128.         }
  129.        
  130.         if( nameQuery != null ) {
  131.            
  132.             match = match && ( strMatch( _nameFirst, nameQuery ) || strMatch( _nameLast, nameQuery ) || strMatch( _username, nameQuery ) );
  133.            
  134.         }
  135.        
  136.         if( roleName == null && nameQuery == null ) match = false;
  137.        
  138.         return match;
  139.        
  140.     }
  141.    
  142.     ///////////////////////////
  143.    
  144.     public ModuleMark[] getMarks() throws SQLException {
  145.        
  146.         return ModuleMark.getModuleMarks(this);
  147.     }
  148.    
  149.     public ModuleYear[] getTeachingModuleYears() throws SQLException {
  150.        
  151.         return ModuleYear.getModuleYears(this);
  152.        
  153.     }
  154.    
  155.     public @Override boolean save() throws SQLException {
  156.        
  157.         if(!isDirty) return false;
  158.        
  159.         Database d = Database.getInstance();
  160.        
  161.         if( isNew ) {
  162.            
  163.             PreparedStatement stmt = d.prepareStatement("INSERT INTO \"SchoolMember\" ( \"firstName\", \"lastName\", \"username\", \"universityId\", \"roleName\", \"password\", \"saltString\") VALUES ( ?, ?, ?, ?, ?, ?, ? )");
  164.             stmt.setString( 1, _nameFirst );
  165.             stmt.setString( 2, _nameLast );
  166.             stmt.setString( 3, _username );
  167.             stmt.setInt   ( 4, _universityId );
  168.             stmt.setString( 5, _roleName );
  169.             stmt.setString( 6, _password );
  170.             stmt.setString( 7, _saltString );
  171.            
  172.             stmt.executeUpdate();
  173.             stmt.close();
  174.            
  175.             isNew = false;
  176.            
  177.         } else {
  178.            
  179.            
  180.             PreparedStatement stmt = d.prepareStatement("UPDATE \"SchoolMember\" SET \"firstName\" = ?, \"lastName\" = ?, \"username\" = ?, \"roleName\" = ?, \"saltString\" = ? WHERE \"universityId\" = ?");
  181.             stmt.setString( 1, _nameFirst );
  182.             stmt.setString( 2, _nameLast );
  183.             stmt.setString( 3, _username );
  184.             stmt.setString( 4, _roleName );
  185.             stmt.setString( 5, _password );
  186.             stmt.setString( 6, _saltString );
  187.            
  188.             stmt.setInt   ( 7, _universityId );
  189.            
  190.             stmt.executeUpdate();
  191.             stmt.close();
  192.         }
  193.        
  194.         isDirty = false;
  195.         return true;
  196.     }
  197.    
  198.     ///////////////////////////
  199.    
  200.     private static final String SELECT_FIELDS = "SELECT \"firstName\", \"lastName\", \"username\", \"universityID\", \"roleName\", \"password\", \"saltString\"";
  201.    
  202.     /** Returns null if the SchoolMember represented by this row is already cached */
  203.     private static SchoolMember fromRow(ResultSet result) throws SQLException {
  204.        
  205.         String firstName = result.getString(1);
  206.         String lastName  = result.getString(2);
  207.         String username  = result.getString(3);
  208.         int    uniId     = result.getInt(4);
  209.         String rolename  = result.getString(5);
  210.         String password  = result.getString(6);
  211.         String salt      = result.getString(7);
  212.        
  213.         SchoolMember cached = isCached(uniId);
  214.         if( cached != null ) return null;
  215.        
  216.         SchoolMember s = new SchoolMember(false, firstName, lastName, username, uniId, rolename, password, salt );
  217.         return s;
  218.     }
  219.    
  220.     public static SchoolMember[] getSchoolMembers() throws SQLException {
  221.        
  222.         return SchoolMember.getSchoolMembers( null, null );
  223.     }
  224.    
  225.     public static SchoolMember[] getSchoolMembers(String roleName, String nameQuery) throws SQLException {
  226.        
  227.         ArrayList<SchoolMember>                   cacheResults;
  228.         if(roleName == null && nameQuery == null) cacheResults = new ArrayList<SchoolMember>();
  229.         else                                      cacheResults = searchCache( SchoolMember.class, roleName, nameQuery );
  230.        
  231.         PreparedStatement stmt;
  232.        
  233.         if( roleName == null && nameQuery == null ) {
  234.            
  235.             stmt = Database.getInstance().prepareStatement( SELECT_FIELDS + " FROM \"SchoolMember\"");
  236.            
  237.         } else {
  238.            
  239.             if( roleName != null && nameQuery == null ) {
  240.                
  241.                 stmt = Database.getInstance().prepareStatement( SELECT_FIELDS + " FROM \"SchoolMember\" WHERE \"roleName\" = ?");
  242.                 stmt.setString(1, "%" + roleName  + "%"); // roleName
  243.                
  244.             } else if( roleName == null && nameQuery != null ) {
  245.                
  246.                 stmt = Database.getInstance().prepareStatement( SELECT_FIELDS + " FROM \"SchoolMember\" WHERE (\"firstName\" ILIKE ?) OR (\"lastName\" ILIKE ?) OR (\"username\" ILIKE ?)");
  247.                 stmt.setString(1, "%" + nameQuery + "%"); // firstName
  248.                 stmt.setString(2, "%" + nameQuery + "%"); // lastName
  249.                 stmt.setString(3, "%" + nameQuery + "%"); // userName
  250.                
  251.             } else {
  252.                
  253.                 stmt = Database.getInstance().prepareStatement( SELECT_FIELDS + " FROM \"SchoolMember\" WHERE \"roleName\" = ? AND ((\"firstName\" ILIKE ?) OR (\"lastName\" ILIKE ?) OR (\"username\" ILIKE ?))");
  254.                 stmt.setString(1, "%" + roleName  + "%"); // roleName
  255.                 stmt.setString(2, "%" + nameQuery + "%"); // firstName
  256.                 stmt.setString(3, "%" + nameQuery + "%"); // lastName
  257.                 stmt.setString(4, "%" + nameQuery + "%"); // userName
  258.                
  259.             }
  260.         }
  261.        
  262.         ResultSet result = stmt.executeQuery();
  263.        
  264.         ArrayList<SchoolMember> fromDb = new ArrayList<SchoolMember>();
  265.        
  266.         while(result.next()) {
  267.            
  268.             SchoolMember s = fromRow( result );
  269.             if( s != null ) fromDb.add( s );
  270.         }
  271.         result.close();
  272.        
  273.         fromDb.addAll( cacheResults );
  274.        
  275.         SchoolMember[] ret = new SchoolMember[ fromDb.size() ];
  276.         fromDb.toArray( ret );
  277.         return ret;
  278.     }
  279.    
  280.     public static SchoolMember getSchoolMember(int universityID) throws SQLException {
  281.        
  282.         SchoolMember cached = isCached( universityID );
  283.         if( cached != null ) return cached;
  284.        
  285.         PreparedStatement stmt = Database.getInstance().prepareStatement( SELECT_FIELDS + " FROM \"SchoolMember\" WHERE \"universityID\" = ?");
  286.         stmt.setInt( 1, universityID );
  287.        
  288.         SchoolMember ret = null;
  289.        
  290.         ResultSet result = stmt.executeQuery();
  291.         if( result.next() ) {
  292.            
  293.             ret = fromRow( result );
  294.         }
  295.         result.close();
  296.        
  297.         return ret;
  298.     }
  299.    
  300.     public static SchoolMember getSchoolMember(String username) throws SQLException {
  301.        
  302.         SchoolMember cached = isCached(username);
  303.         if( cached != null ) return cached;
  304.        
  305.         PreparedStatement stmt = Database.getInstance().prepareStatement( SELECT_FIELDS + " FROM \"SchoolMember\" WHERE \"username\" = ?");
  306.         stmt.setString( 1, username );
  307.        
  308.         SchoolMember ret = null;
  309.        
  310.         ResultSet result = stmt.executeQuery();
  311.         if( result.next() ) {
  312.            
  313.             ret = fromRow( result );
  314.         }
  315.         result.close();
  316.        
  317.         return ret;
  318.     }
  319.    
  320. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement