示例#1
0
 public JDBCCMRFieldBridge getCMRFieldByName(String name) {
   for (int i = 0; i < cmrFields.length; ++i) {
     JDBCCMRFieldBridge cmrField = cmrFields[i];
     if (cmrField.getFieldName().equals(name)) return cmrField;
   }
   return null;
 }
示例#2
0
 public void cascadeDelete(CmpEntityBeanContext ctx, Map oldRelations)
     throws RemoveException, RemoteException {
   for (int i = 0; i < cmrFields.length; ++i) {
     JDBCCMRFieldBridge cmrField = cmrFields[i];
     Object value = oldRelations.get(cmrField);
     if (value != null) cmrField.cascadeDelete(ctx, (List) value);
   }
 }
示例#3
0
 public void initInstance(CmpEntityBeanContext ctx) {
   for (int i = 0; i < tableFields.length; ++i) tableFields[i].initInstance(ctx);
   // for(int i = 0; i < primaryKeyFields.length; ++i)
   //   primaryKeyFields[i].initInstance(ctx);
   // for(int i = 0; i < cmpFields.length; ++i)
   //   cmpFields[i].initInstance(ctx);
   for (int i = 0; i < cmrFields.length; ++i) {
     JDBCCMRFieldBridge cmrField = cmrFields[i];
     cmrField.initInstance(ctx);
   }
 }
 private void destroyRelations(Object oldRelatedId, CmpEntityBeanContext ctx) {
   JDBCCMRFieldBridge relatedCMRField = (JDBCCMRFieldBridge) cmrField.getRelatedCMRField();
   relatedCMRField.removeRelatedPKWaitingForMyPK(oldRelatedId, ctx.getPrimaryKey());
   try {
     if (cmrField.isForeignKeyValid(oldRelatedId)) {
       cmrField.destroyRelationLinks(ctx, oldRelatedId, true, false);
     }
   } catch (Exception e) {
     // no such object
   }
 }
    /**
     * Going down the chain current related id is calculated and stored in oldRelatedId. When the
     * next link is originator, the flow is going backward: - field state is updated with new value;
     * - new related id is calculated; - old relationship is destroyed (if there is one); - new
     * relationship is established (if it is valid).
     *
     * @param originator ChainLink that started execution.
     * @param ctx EnterpriseEntityContext of the entity.
     * @param fieldState field's state.
     * @param newValue new field value.
     */
    public void doExecute(
        ChainLink originator, CmpEntityBeanContext ctx, FieldState fieldState, Object newValue) {
      // get old related id
      Object oldRelatedId = cmrField.getRelatedIdFromContext(ctx);

      // invoke down the cmrChain
      if (originator != getNextLink()) {
        getNextLink().doExecute(originator, ctx, fieldState, newValue);
      }

      // update field state
      fieldState.setValue(newValue);

      // get new related id
      Object newRelatedId = cmrField.getRelatedIdFromContext(ctx);

      // destroy old relationship
      if (oldRelatedId != null) destroyRelations(oldRelatedId, ctx);

      // establish new relationship
      if (newRelatedId != null) createRelations(newRelatedId, ctx);
    }
示例#6
0
 private boolean[] loadGroupMask(String groupName, boolean[] defaultGroup) {
   List<String> fieldNames = metadata.getLoadGroup(groupName);
   boolean[] group = new boolean[tableFields.length];
   if (defaultGroup != null) System.arraycopy(defaultGroup, 0, group, 0, group.length);
   for (String fieldName : fieldNames) {
     JDBCFieldBridge field = (JDBCFieldBridge) getFieldByName(fieldName);
     if (field == null) throw MESSAGES.fieldNotFound(fieldName, getEntityName());
     if (field instanceof JDBCCMRFieldBridge) {
       JDBCCMRFieldBridge cmrField = (JDBCCMRFieldBridge) field;
       if (cmrField.hasForeignKey()) {
         JDBCCMPFieldBridge[] fkFields = (JDBCCMPFieldBridge[]) cmrField.getForeignKeyFields();
         for (int i = 0; i < fkFields.length; ++i) {
           group[fkFields[i].getTableIndex()] = true;
         }
       } else {
         throw MESSAGES.onlyCmrFieldsWithFkInLoadGroup(fieldName);
       }
     } else {
       group[((JDBCCMPFieldBridge) field).getTableIndex()] = true;
     }
   }
   return group;
 }
 private void createRelations(Object newRelatedId, CmpEntityBeanContext ctx) {
   try {
     if (cmrField.isForeignKeyValid(newRelatedId)) {
       cmrField.createRelationLinks(ctx, newRelatedId, false);
     } else {
       // set foreign key to a new value
       cmrField.setForeignKey(ctx, newRelatedId);
       // put calculated relatedId to the waiting list
       if (ctx.getPrimaryKey() != null) {
         JDBCCMRFieldBridge relatedCMRField = (JDBCCMRFieldBridge) cmrField.getRelatedCMRField();
         relatedCMRField.addRelatedPKWaitingForMyPK(newRelatedId, ctx.getPrimaryKey());
       }
     }
   } catch (Exception e) {
     // no such object
   }
 }