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 + -
显示快捷键?