⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 workspacedatacache.java

📁 TestDataBuilder是一个采用Java编写的
💻 JAVA
字号:
package com.testDataBuilder.config;

import java.io.File;
import java.io.FilenameFilter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.io.filefilter.SuffixFileFilter;
import org.apache.commons.lang.StringUtils;
import com.testDataBuilder.config.TableConfig;
import com.testDataBuilder.config.TestDataConfig;
import com.testDataBuilder.config.preference.IPreference;
import com.testDataBuilder.core.role.Role;
import com.testDataBuilder.dbMetaInfo.Database;
import com.testDataBuilder.exception.BaseException;
import com.testDataBuilder.util.Global;

public class WorkspaceDataCache {

	private String workspace;
	
	private Database database = null;
	
	private List<String> sortedTableNames = null;
	
    public static final String GEN_SQL_DIR_NAME = "sqlFiles";
    
	public WorkspaceDataCache(){
		
	}
		
	private static WorkspaceDataCache instance = null;
	
	public static WorkspaceDataCache getInstance(){
		if(instance == null){
			instance = new WorkspaceDataCache();
		}
		return instance;
	}
	
	public WorkspaceDataCache init(String workspace) throws BaseException{
		
		if(StringUtils.isEmpty(workspace)){
			this.clearCache();
			this.workspace = workspace;
		}else{
			/**
			 * 只有工作区发生改变时,才初始化。
			 */
			if(!workspace.equalsIgnoreCase(this.workspace)){
				clearCache();
				this.workspace = workspace;
				this.testDataConfig = new TestDataConfig(getProjectConfigFile());
				this.initAll();
			}
		}
		
        return this;
	}
	
	public void clearCache(){
		this.testDataConfig = null;
		this.tableConfigs.clear();
		this.database = null;
		this.workspace = null;
	}
	
	private File getProjectConfigFile() {       
		return new File(getWorkspace(), Global.PROJECT_CONFIG);
    }
	    
		
    public static long getFileLastModifyTime(String fileName){
        return new File(fileName).lastModified();
    }
    
    private void initAll() throws BaseException {
		Object[] tableNames =  this.getTableConfigNames();
		for(Object tableName : tableNames){
			this.getTableConfig((String)tableName);
		}
	}	

    FilenameFilter tableConfigFileFilter = new SuffixFileFilter(IPreference.TABLE_CONFIG_SUFFIX);
    
    public File[] getTableConfigFiles(){
        File file = new File(this.getWorkspace());
        return file.listFiles(tableConfigFileFilter);
    }
    
    public Object[] getTableConfigNames(){
        File[] files = getTableConfigFiles();
        List<String> tableConfigNames = new ArrayList<String>(files.length);
        for(int i=0;i < files.length; i++){
        	tableConfigNames.add(files[i].getName().replace(IPreference.TABLE_CONFIG_SUFFIX, ""));
        }
        Collections.sort(tableConfigNames);
        
        return tableConfigNames.toArray();
    }
    
    public TableConfig getTableConfigFromList(String tableName){
        TableConfig tableConfig = null;
        for(TableConfig tempTableConfig : this.getTableConfigs()){
            if(tempTableConfig.getTableName().equalsIgnoreCase(tableName)){
                tableConfig = tempTableConfig;
                break;
            }
        }
        return tableConfig;
    }
    
    public TableConfig getTableConfig(String tableName) throws BaseException{
        TableConfig tableConfig = getTableConfigFromList(tableName);
        if(tableConfig == null){    
        	tableConfig = new TableConfig(tableName);
        	File configFile = tableConfig.getConfigFile();
            if(configFile.exists()){
                tableConfig.configure(configFile);
                this.getTableConfigs().add(tableConfig);
            }else{
                throw new RuntimeException("ConfigDataCatch.getTableConfig [" + configFile.getAbsolutePath() + "] file not exist");
            }
        }
        return tableConfig;
    }
    
    public void removeAndBankupTableConfig(String tableName){
        TableConfig tableConfig = getTableConfigFromList(tableName);
        if(tableConfig != null){
            this.getTableConfigs().remove(tableConfig);
        }else{
            tableConfig = new TableConfig(tableName);
        }
        tableConfig.deleteAndBankupFile();
    }
    
    public void removeAndBankupAllTableConfig(){        
        Object[] tableConfigNames = this.getTableConfigNames();
        for(Object tableConfigName : tableConfigNames){
            TableConfig tableConfig = new TableConfig((String)tableConfigName);
            tableConfig.deleteAndBankupFile();
        }
        this.getTableConfigs().clear();
    }
    
    public void addOrRefershTableConfig(TableConfig tableConfig){
        TableConfig tempTableConfig = this.getTableConfigFromList(
                            tableConfig.getTableName());
        if(tempTableConfig != null){
            int index = this.getTableConfigs().indexOf(tempTableConfig);
            this.getTableConfigs().remove(tempTableConfig);
            this.getTableConfigs().add(index, tableConfig);
        }else{
            this.getTableConfigs().add(tableConfig);
        }
    }

	public File getTableConfigFile(String tableName){
		return getFileFromWorkspace(tableName + IPreference.TABLE_CONFIG_SUFFIX);
	}
	
    public File getFileFromWorkspace(String fileName) {
		return new File(this.getWorkspace(), fileName);
	}
	
    private TestDataConfig testDataConfig = null;  //  @jve:decl-index=0:
    
    private Map<String, Long> lastModifyTimes = new HashMap<String, Long>();
    
	private List<TableConfig> tableConfigs = new ArrayList<TableConfig>();
	
	public String toString(){
		return "Database";
	}

	public Role getRole(String tableName, String roleName){
		return this.getTableConfigFromList(tableName)
			.getRoleFactory().getRole(roleName);
	}

	public String getWorkspace() {
		return workspace;
	}

    public String getGeneratedSQLDir(){
        return workspace + Global.SEP + GEN_SQL_DIR_NAME;
    }
	public void setWorkspace(String workspace) {
		this.workspace = workspace;
	}

    public List<TableConfig> getTableConfigs() {
        return tableConfigs;
    }

    public synchronized List<TableConfig> getSortedTableConfig(){
        if(this.tableConfigs != null){
        	if(sortedTableNames ==null){
        		return this.tableConfigs;
        	}
        	
            List<TableConfig> sortedTableConfig = new ArrayList<TableConfig>();
            for(String tableName : sortedTableNames){
                for(TableConfig tableConfig : tableConfigs){
                    if(tableConfig.getTableName().equalsIgnoreCase(tableName)){
                        sortedTableConfig.add(tableConfig);
                        break;
                    }
                }
            }
            return  sortedTableConfig;
        }
        return null;
    }
    
    public void setTableConfigs(List<TableConfig> tableConfigs) {
        this.tableConfigs = tableConfigs;
    }

    public TestDataConfig getTestDataConfig() {
        return testDataConfig;
    }

    public void setTestDataConfig(TestDataConfig testDataConfig) {
        this.testDataConfig = testDataConfig;
    }

	public Database getDatabase() {
		return database;
	}

	public void setDatabase(Database database) {
		this.database = database;
	}

	public List<String> getSortedTableNames() {
		return sortedTableNames;
	}

	public void setSortedTableNames(List<String> sortedTableNames) {
		this.sortedTableNames = sortedTableNames;
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -