entityinstallationaction.java
来自「CRM源码This file describes some issues tha」· Java 代码 · 共 1,805 行 · 第 1/5 页
JAVA
1,805 行
File[] files = chainDirFile.listFiles( new FilenameFilter() { public boolean accept( File dir, String name ) { String ext = CONFIG_FILES_EXTENSION; if( name.substring( name.length() - ext.length() ).equals( ext ) ) { return true; } else { return false; } } } ); try { // cycle read chain config XML files for( int i = 0; i < files.length; i++ ) { INFO( " read from " + files[i].getCanonicalPath() ); // build Chains object Document document = xmlWrapper.getDocument( files[i], false ); Chains chains = ( Chains ) xmlBind.xmlToJava( Chains.class, document ); int chain_count = chains.getChainCount(); for( int j = 0; j < chain_count; j++ ) { Chain chain = chains.getChain( j ); chainList.add( chain ); } } } catch( IOException ex ) { ERROR( ex ); throw new GenericSystemException( "IO exception. Can't process parsing chains: " + ex.getMessage(), ex ); } } /** * Build list of Entity object(s) and fill additional attributes * @param entityConfigArray array of EntityConfig object(s) */ private void buildEntityList( EntityConfig[] entityConfigArray ) { for( int i = 0; i < entityConfigArray.length; i++ ) { buildEntity1( entityConfigArray[i] ); } int entity_count = entityNames.size(); DEBUG( "BUILD PROCESS 1 - DONE" ); DEBUG( " initial entity size:" + INITIAL_ENTITY_SIZE ); DEBUG( " current entity size:" + entity_count ); for( int i = INITIAL_ENTITY_SIZE; i < entity_count; i++ ) { Entity entity = getEntityViewConfig( ( String ) entityNames.get( i ) ); buildEntity2( entity ); } DEBUG( "BUILD PROCESS 2 - DONE" ); for( int i = INITIAL_ENTITY_SIZE; i < entity_count; i++ ) { Entity entity = getEntityViewConfig( ( String ) entityNames.get( i ) ); buildEntity3( entity ); } DEBUG( "BUILD PROCESS 3 - DONE" ); for( int i = INITIAL_ENTITY_SIZE; i < entity_count; i++ ) { Entity entity = getEntityViewConfig( ( String ) entityNames.get( i ) ); buildEntity4( entity ); } DEBUG( "BUILD PROCESS 4 - DONE" ); for( int i = INITIAL_ENTITY_SIZE; i < entity_count; i++ ) { Entity entity = getEntityViewConfig( ( String ) entityNames.get( i ) ); buildEntity5( entity ); } DEBUG( "BUILD PROCESS 5 - DONE" ); for( int i = INITIAL_ENTITY_SIZE; i < entity_count; i++ ) { Entity entity = getEntityViewConfig( ( String ) entityNames.get( i ) ); buildEntity6( entity ); } DEBUG( "BUILD PROCESS 6 - DONE" ); } // #1: // fill attributes private void buildEntity1( EntityConfig entityConfig ) { List<String> _entityNames = new ArrayList<String>(); Map<String, Entity> _entityTable = new HashMap<String, Entity>(); // cycle to select all Entity objects int entitySize = entityConfig.getEntityCount(); for( int j = 0; j < entitySize; j++ ) { Entity entity = entityConfig.getEntity( j ); String name = entity.getName(); INFO( " load entity " + name ); // add some specific Entity attributes driveEntityAttributes( entity ); // sycle to select all Efield objects int efield_count = entity.getEfieldCount(); for( int k = 0; k < efield_count; k++ ) { // add some specific Efield attribues driveEfieldAttributes( entity, entity.getEfield( k ) ); } // check History attribute //driveHistoryAttribute( entity ); if( _entityNames.contains( name ) ) { throw new GenericSystemException( "Entity '" + name + "' was found more than once" ); } // add Entity to the temporary table _entityNames.add( name ); _entityTable.put( name, entity ); } // add temporary table to the table of entities entityNames.addAll( _entityNames ); entityTable.putAll( _entityTable ); } // #2: // update Efield Listref attributes private void buildEntity2( Entity entity ) { // sycle to select all Efield objects for( int k = 0; k < entity.getEfieldCount(); k++ ) { // update some Efield attribues updateLrefEfieldAttributes( entity, entity.getEfield( k ) ); } } // #3: // update Efield Ref attributes private void buildEntity3( Entity entity ) { // sycle to select all Efield objects for( int k = 0; k < entity.getEfieldCount(); k++ ) { // update some Efield attribues updateRefEfieldAttributes( entity, entity.getEfield( k ) ); } } // #4: // update Entity attributes private void buildEntity4( Entity entity ) { // update some Entity attribues updateEntityAttributes( entity ); } // #5: // build chains between entities private void buildEntity5( Entity entity1 ) { String e1 = entity1.getName(); int entity_count = entityNames.size(); // cycle to select all Entity objects for( int i = 0; i < entity_count; i++ ) { String e2 = ( String ) entityNames.get( i ); // check are these entities relatives if( EntityHelper.isChild( e1, e2 ) ) { continue; } if( EntityHelper.isChild( e2, e1 ) ) { continue; } // check does Chain object exist ChainTable chainTab = getChainTable( e1, e2 ); if( chainTab != null ) { // find !!! entity1.addChainTable( chainTab ); } } } // #6: // update Dataset attributes // set fkeys elements private void buildEntity6( Entity entity ) { // cycle to select all Dataset objects for( int k = 0; k < entity.getDatasetCount(); k++ ) { // update some Dataset attribues updateDatasetAttributes( entity, entity.getDataset( k ) ); } // add db fkeys Entity attribues driveEntityFkeysAttributes( entity ); } /** * Add some attributes into the Entity object * @param entity Entity object */ private void driveEntityAttributes( Entity entity ) { // version id entity.setVersionId( new Long( CUR_VERSION ) ); // build dbobjAlias attribute String dbobjAlias = "A" + ENTITY_COUNTER; entity.setDbobjAlias( dbobjAlias ); ENTITY_COUNTER++; } /** * Check History attribute * @param entity Entity object */ private void driveHistoryAttribute( Entity entity ) { String historyFieldName = entity.getHistoryfield(); if( !StringHelper.isEmpty( historyFieldName ) ) { // Find the 'history' field. try { Efield historyField = EntityHelper.getEfield( historyFieldName, entity ); if( historyField.getDatatype() != DataSType.MEMO ) { throw new GenericSystemException( "Field " + historyFieldName + " could not be used as a History field in Entity '" + entity.getName()); } else { entity.setHasHistoryFields( Boolean.TRUE ); } } catch( UnknownEfieldException ex ) { WARN(ex.getMessage()); } } } /** * Add DB fkeys attributes into the Entity object * @param entity Entity object */ private void driveEntityFkeysAttributes( Entity entity ) { if( entity.getInitialized().booleanValue() ) { // entity already initialized - no use to find fkeys return; } // get table attributes EntityDdobjectInfoVO dbobjectInfo = getEntityDdobjectInfo( entity ); // joined list List<Fkeys> joinedFkeyList = new ArrayList<Fkeys>(); // array of already exists fkeys Fkeys[] existsFkeys = entity.getFkeys(); // add found elements int size = dbobjectInfo.getFkeySize(); for( int i = 0; i < size; i++ ) { EntityDdobjectInfoVO.FK foundFkey = ( EntityDdobjectInfoVO.FK ) dbobjectInfo.getFkey( i ); Fkeys newFkey = new Fkeys(); newFkey.setFkTable( foundFkey.getFkDbobjectName() ); newFkey.setFkColumn( foundFkey.getFkDbcolumnName() ); newFkey.setPkColumn( foundFkey.getPkDbcolumnName() ); joinedFkeyList.add( newFkey ); } // add exists elements for( int i = 0; i < existsFkeys.length; i++ ) { Fkeys existsFkey = existsFkeys[i]; boolean hasFkEntity = ( existsFkey.getFkEntity() != null ); boolean hasFkTable = ( existsFkey.getFkTable() != null ); boolean hasFkColumn = ( existsFkey.getFkColumn() != null ); boolean hasPkColumn = ( existsFkey.getPkColumn() != null ); if( !hasFkTable ) { // set foreign table name if( !hasFkEntity ) { throw new GenericSystemException( "Please specify fkEntity or fkTable for fkey of entity '" + entity.getName() + "'" ); } Entity fkEntity = getEntityViewConfig( existsFkey.getFkEntity() ); existsFkey.setFkTable( fkEntity.getDbobject() ); } // add attributes got from DB size = joinedFkeyList.size(); for( int j = 0; j < size; j++ ) { Fkeys _tmp = ( Fkeys ) joinedFkeyList.get( j ); if( existsFkey.getFkTable().equalsIgnoreCase( _tmp.getFkTable() ) && ( !hasFkColumn || existsFkey.getFkColumn().equalsIgnoreCase( _tmp.getFkColumn() ) ) && ( !hasPkColumn || existsFkey.getPkColumn().equalsIgnoreCase( _tmp.getPkColumn() ) ) ) { // exists. fill non mandatory attributes if needed if( !hasFkColumn ) { existsFkey.setFkColumn( _tmp.getFkColumn() ); } if( !hasPkColumn ) { existsFkey.setPkColumn( _tmp.getPkColumn() ); // remove old } joinedFkeyList.remove( j ); break; } } // add exists fkey in the end of list joinedFkeyList.add( existsFkey ); } // remove all fkeys entity.clearFkeys(); // add all fkeys from joined list size = joinedFkeyList.size(); for( int i = 0; i < size; i++ ) { Fkeys fkey = ( Fkeys ) joinedFkeyList.get( i ); if( fkey.getFkColumn() == null ) { throw new GenericSystemException( "Please specify 'fkColumn' for fkey." + " Entity '" + entity.getName() + "'" + " FkTableName '" + fkey.getFkTable() + "'" ); } if( fkey.getPkColumn() == null ) { throw new GenericSystemException( "Please specify 'pkColumn' for fkey." + " Entity '" + entity.getName() + "'" + " FkTableName '" + fkey.getFkTable() + "'" ); } entity.addFkeys( fkey ); } } /** * Update (add) some Entity object attributes * @param entity Entity object */ private void updateEntityAttributes( Entity entity ) { // build eql-constraint attribute String eqlConstraint = entity.getEqlConstraint(); if( !StringHelper.isEmpty( eqlConstraint ) ) { entity.setEqlConstraint( makeVariableSubstitution( entity, eqlConstraint ) ); } // build eql-where attribute String eqlWhere = entity.getEqlWhere(); if( !StringHelper.isEmpty( eqlWhere ) ) { entity.setEqlWhere( makeVariableSubstitution( entity, eqlWhere ) ); } // build eql-order attribute String eqlOrder = entity.getEqlOrder(); if( !StringHelper.isEmpty( eqlOrder ) ) { entity.setEqlOrder( makeVariableSubstitution( entity, eqlOrder ) ); }
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?