📄 workspacedatacache.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 + -