Search in sources :

Example 6 with GroupAccess

use of org.vcell.util.document.GroupAccess in project vcell by virtualcell.

the class DbDriver method updateVersionableInit.

/**
 * This method was created in VisualAge.
 * @return cbit.image.VCImage
 * @param user cbit.vcell.server.User
 * @param image cbit.image.VCImage
 */
protected Version updateVersionableInit(InsertHashtable hash, Connection con, User user, Versionable versionable, boolean bVersion) throws DataAccessException, SQLException, RecordChangedException {
    if (hash.getDatabaseKey(versionable) != null) {
        throw new DataAccessException(versionable + " already inserted in this transaction");
    }
    if (versionable.getVersion() == null || versionable.getVersion().getVersionKey() == null) {
        throw new DataAccessException(versionable + " Not expecting null key before update.  Update Failed");
    }
    // Can only update things we own
    if (!versionable.getVersion().getOwner().equals(user)) {
        throw new PermissionException("Versionable name=" + versionable.getName() + " type=" + VersionTable.versionableTypeFromVersionable(versionable) + "\nuser=" + versionable.getVersion().getOwner() + " Not Equal to client user=" + user);
    }
    // 
    // get new Version info
    // 
    User owner = user;
    GroupAccess accessInfo = versionable.getVersion().getGroupAccess();
    // 
    if (versionable instanceof BioModelMetaData || versionable instanceof MathModelMetaData || versionable instanceof Geometry) {
        Statement stmt = null;
        try {
            stmt = con.createStatement();
            String sql = "SELECT " + VersionTable.privacy_ColumnName + " FROM " + VersionTable.getVersionTable(versionable).getTableName() + " WHERE " + VersionTable.id_ColumnName + " = " + versionable.getVersion().getVersionKey();
            ResultSet rset = stmt.executeQuery(sql);
            BigDecimal dbgrpid = null;
            if (rset.next()) {
                dbgrpid = rset.getBigDecimal(VersionTable.privacy_ColumnName);
            }
            rset.close();
            if (!dbgrpid.equals(versionable.getVersion().getGroupAccess().getGroupid())) {
                accessInfo = getGroupAccessFromGroupID(con, dbgrpid);
            }
        } catch (Throwable e) {
        // Don't fail, just keep the permission versionable came in with
        } finally {
            if (stmt != null) {
                stmt.close();
            }
        }
    }
    KeyValue versionKey = keyFactory.getNewKey(con);
    java.util.Date date = getNewDate(con);
    // 
    // always use the previous BranchPointReference unless branching
    // 
    KeyValue branchPointRefKey = versionable.getVersion().getBranchPointRefKey();
    // Check for Archive and Publish not needed in update because versionflag is always forced to Current
    VersionFlag versionFlag = null;
    // if (bVersion){
    // versionFlag = VersionFlag.Archived;
    // }else{
    versionFlag = VersionFlag.Current;
    // }
    String versionName = versionable.getVersion().getName();
    java.math.BigDecimal branchID = versionable.getVersion().getBranchID();
    String annot = versionable.getDescription();
    // 
    // Insert Software Version
    // 
    insertSoftwareVersion(con, versionKey);
    // 
    return new Version(versionKey, versionName, owner, accessInfo, branchPointRefKey, branchID, date, versionFlag, annot);
}
Also used : PermissionException(org.vcell.util.PermissionException) User(org.vcell.util.document.User) KeyValue(org.vcell.util.document.KeyValue) PreparedStatement(java.sql.PreparedStatement) Statement(java.sql.Statement) MathModelMetaData(cbit.vcell.mathmodel.MathModelMetaData) BioModelMetaData(cbit.vcell.biomodel.BioModelMetaData) BigDecimal(java.math.BigDecimal) Geometry(cbit.vcell.geometry.Geometry) BigDecimal(java.math.BigDecimal) VersionFlag(org.vcell.util.document.VersionFlag) Version(org.vcell.util.document.Version) VersionableTypeVersion(org.vcell.util.document.VersionableTypeVersion) ResultSet(java.sql.ResultSet) GroupAccess(org.vcell.util.document.GroupAccess) DataAccessException(org.vcell.util.DataAccessException)

Aggregations

GroupAccess (org.vcell.util.document.GroupAccess)6 DataAccessException (org.vcell.util.DataAccessException)4 KeyValue (org.vcell.util.document.KeyValue)4 User (org.vcell.util.document.User)4 VersionFlag (org.vcell.util.document.VersionFlag)4 Version (org.vcell.util.document.Version)3 VCImageInfo (cbit.image.VCImageInfo)2 ACLEditor (cbit.vcell.client.desktop.ACLEditor)2 AsynchClientTask (cbit.vcell.client.task.AsynchClientTask)2 DocumentManager (cbit.vcell.clientdb.DocumentManager)2 DataContext (cbit.vcell.data.DataContext)2 GeometryInfo (cbit.vcell.geometry.GeometryInfo)2 ParameterContext (cbit.vcell.mapping.ParameterContext)2 ReactionContext (cbit.vcell.mapping.ReactionContext)2 SimulationContext (cbit.vcell.mapping.SimulationContext)2 SpeciesContext (cbit.vcell.model.SpeciesContext)2 OutputFunctionContext (cbit.vcell.solver.OutputFunctionContext)2 BigDecimal (java.math.BigDecimal)2 SimpleDateFormat (java.text.SimpleDateFormat)2 Hashtable (java.util.Hashtable)2