/******************************************************************************* * Copyright (c) 2013 hangum. * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Lesser Public License v2.1 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html * * Contributors: * hangum - initial API and implementation ******************************************************************************/ package com.hangum.tadpole.commons.libs.core.define; import java.util.HashMap; import java.util.Map; import java.util.Properties; import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; /** * 전역 변수 정의 * * @author hangum * */ public class PublicTadpoleDefine { /** URL system version information */ public static final String URL_SYSTEM_VERION = String.format("?%s%s=%s", SystemDefine.MAJOR_VERSION, SystemDefine.SUB_VERSION, SystemDefine.RELEASE_DATE); /** set user info */ public static String CERT_USER_INFO = ""; /** define default time zone*/ public static final String DEFAULT_TIME_ZONE = "Asia/Seoul"; /** default log file name*/ public static final String DEFAULT_LOG_FILE = "./logs/tadpole.log"; public static final String DEFAULT_VELOCITY_LOG_FILE = "./logs/tadpoleVelocity.log"; /** * 환경 정보 파일 */ public static final String TDB_CONFIG_FILE = "tadpole_interface.properties"; /** * Define gateway db list key */ public static final String GATEWAY_DB_LIST = "GATEWAY_DB_LIST"; /** cookie path */ public static String _cookiePath = "/"; public static final int systemAdminId = -1; /** Default resource name */ public static final String DEFAUL_RESOURCE_NAME = "_TDB_DEF_NAME_"; /** mail type */ public static enum MAIL_TYPE {NONE, SEND_GRID, SMTP}; /** 시스템 사용 그룹 정의 */ public static enum SYSTEM_USE_GROUP {PERSONAL, GROUP} /** 디비 연결시 엑션 */ public static enum DB_CONNECTION_ASK {NO, PASSWORD, OTP, PASSWORD_OTP}; /** 사용자 쿼리를 프리페어 스테이트 먼트로 처리하는 파라미터 타입 */ public static enum PARAMETER_TYPE {JAVA_BASIC, ORACLE, MYBATIS_SHARP, MYBATIS_DOLLAR}; /** rest api service key */ public static final String SERVICE_KEY_NAME = "serviceID"; /** default system encrypt password */ public static final String SYSTEM_DEFAULT_USER = "hangum@tadpolehub.com"; public static final String SYSTEM_DEFAULT_PASSWORD = "startService.tdb.son"; /** COOKIE USER ID */ public static final String TDB_COOKIE_UPDATE_CHECK = "TDB_COOKIE_UPDATE_CHECK"; public static final String TDB_COOKIE_USER_ID = "TDB_USER_ID"; public static final String TDB_COOKIE_USER_PWD = "TDB_USER_PWD"; public static final String TDB_COOKIE_USER_SAVE_CKECK = "TDB_USER_SAVE_CHECK"; public static final String TDB_COOKIE_USER_LANGUAGE = "TDB_USER_LANGUAGE"; public static final String TDB_COOKIE_USER_IP = "TDB_USER_IP"; /** * PLAN Statement ID */ public static final String STATEMENT_ID = "||TDB_STMT_ID||"; //$NON-NLS-1$ /** 0번째 테이블 컬럼을 선택한다 */ public static final String DEFINE_TABLE_COLUMN_BASE_ZERO = "TDB_BASE_ZERO"; public static final String DEFINE_TABLE_COLUMN_BASE_ZERO_TYPE = "TDB_BASE_TYPE"; /** * 특별 컬럼을 정의 합니다. */ public static final String SPECIAL_USER_DEFINE_HIDE_COLUMN = "TDB_HIDE"; /** * 분리자 */ public static final String DELIMITER = "||DEL||"; //$NON-NLS-1$ public static final String DELIMITER_DBL = "||DEL-DBL||"; //$NON-NLS-1$ /** 라인분리자 */ public static final String LINE_SEPARATOR = "\n";//System.getProperty("line.separator"); //$NON-NLS-1$ public static final String DOUBLE_LINE_SEPARATOR = LINE_SEPARATOR + LINE_SEPARATOR; /** DIR SEPARATOR */ public static final char DIR_SEPARATOR = IOUtils.DIR_SEPARATOR; /** temp dir 임시 디렉토리 생성에 오류 있음. 확인 필요. java.io.IOException: Directory '/tmpTempTable1458208430419' could not be created 오류 발생. 환경 설정에 문제인지(prefix 혹은 디렉토리 미지정).. 아니면 코드상의 오류(DIRECTORY-SEPERATOR 가 빠진 문제)인지 확인 필요 */ public static final String TEMP_DIR = FileUtils.getTempDirectoryPath() + PublicTadpoleDefine.DIR_SEPARATOR; /** 쿼리 구분자 */ public static final String SQL_DELIMITER = ";"; //$NON-NLS-1$ /** tadpole default port */ public static final String TADPOLE_DEFAULT_PORT = "10081"; /** tadpole url */ public static final String TADPOLE_URL = "http://127.0.0.1:%s"; /** * tadpole url * * @return */ public static String getTadpoleUrl() { String tadpolePort = System.getProperty("org.osgi.service.http.port", TADPOLE_DEFAULT_PORT); //$NON-NLS-1$ //$NON-NLS-2$ return String.format(TADPOLE_URL, tadpolePort); } /** 외부 계정으로 올챙이가 접속 할때의 외부 계정 리스트. 현재는 external_account 의 type에 사용. */ public enum EXTERNAL_ACCOUNT {AMAZONRDS, DBSAFER}; /** user login type */ public static enum INPUT_TYPE {NORMAL, GOOGLE_OAUTH, LDAP}; /** yes, no */ public static enum YES_NO {YES, NO}; /** Success, Fail */ public static enum SUCCESS_FAIL {S, F}; /** change resource save */ public static final String SAVE_FILE = "CHANGE_TADPOLE_RESOURE"; //$NON-NLS-1$ /** erd - select table */ public static final String SELECT_ERD_TABLE = "SELECT_ERD_TABLE_RESOURE"; //$NON-NLS-1$ /** auto commit 사용여부를 가립니다. */ public static final String AUTOCOMMIT_USE = "_AUTOCOMMIT_USE"; //$NON-NLS-1$ /** Tadpole support browser list */ public static enum TADPOLE_SUPPORT_BROWSER {EDGE, FIREFOX, CHROME, SAFARI, IE, OPERA}; /** Tadpole support browser list */ public static enum TADPOLE_SUPPORT_BROWSERIP {FIREFOX, CHROME, OPERA}; /** * This variable is user_role_table. */ public static enum USER_ROLE_TYPE {SYSTEM_ADMIN, ADMIN, DBA, MANAGER, USER, GUEST}; /** * Setting SQL Client Info * @return */ public static Properties getSQLClientInfo() { Properties prop = new Properties(); prop.setProperty("ApplicationName", String.format("%s %s %s", SystemDefine.NAME, SystemDefine.MAJOR_VERSION, SystemDefine.RELEASE_DATE)); // prop.setProperty("ClientUser", RWT.getRequest().getRemoteHost()); // prop.setProperty("ClientHostname", RWT.getRequest().getLocalAddr()); return prop; } /** * ace editor theme list https://docs.c9.io/docs/syntax-highlighting-themes */ private static Map<String, String> mapTheme = new HashMap<String, String>(); public static Map<String, String> getMapTheme() { if(mapTheme.isEmpty()) { mapTheme.put("Chrome", "chrome"); mapTheme.put("Clouds", "clouds"); mapTheme.put("Clouds Midnight", "clouds_midnight"); mapTheme.put("Cobalt", "cobalt"); mapTheme.put("Crimson Editor", "crimson_editor"); mapTheme.put("Dawn", "dawn"); mapTheme.put("Eclipse", "eclipse"); mapTheme.put("Idle Fingers", "idle_fingers"); mapTheme.put("Kr Theme", "kr_theme"); mapTheme.put("Merbivore", "merbivore"); mapTheme.put("Merbivore Soft", "merbivore_soft"); mapTheme.put("Mono Industrial", "mono_industrial"); mapTheme.put("Monokai", "monokai"); mapTheme.put("Pastel On Dark", "pastel_on_dark"); mapTheme.put("Solarized Dark", "solarized_dark"); mapTheme.put("Solarized Light", "solarized_light"); mapTheme.put("TextMate", "textmate"); mapTheme.put("Tomorrow", "tomorrow"); mapTheme.put("Tomorrow Night", "tomorrow_night"); mapTheme.put("Tomorrow Night Blue", "tomorrow_night_blue"); mapTheme.put("Tomorrow Night Bright", "tomorrow_night_bright"); mapTheme.put("Tomorrow Night Eighties", "tomorrow_night_eighties"); mapTheme.put("Twilight", "twilight"); mapTheme.put("Vibrant Inkv", "vibrant_inkv"); } return mapTheme; } /** * db operation type * * @author hangum * */ public enum DBOperationType { PRODUCTION("Production Sever"), DR("Disaster recovery"), DEVELOP("Develop Sever"), TEST("Test Sever"), BACKUP("Backup Sever"), OTHERS("Others Sever"); private String typeName; private DBOperationType(String typeName) { this.typeName = typeName; } public String getTypeName() { return typeName; } public static DBOperationType getNameToType(String name) { if(PRODUCTION.typeName.equals(name)) return PRODUCTION; else if(DR.typeName.equals(name)) return DR; else if(DEVELOP.typeName.equals(name)) return DEVELOP; else if(TEST.typeName.equals(name)) return TEST; else if(BACKUP.typeName.equals(name)) return BACKUP; else return OTHERS; } }; /** 에디터를 열때 오픈하는 타입을 적습니다. */ public static enum EDITOR_OPEN_TYPE {NONE, STRING, FILE}; /** save resource type */ public static enum RESOURCE_TYPE {ERD, SQL, AUTO_SQL}; /** define SQL, ERD shared type */ public static enum SHARED_TYPE {PUBLIC, PRIVATE}; /** executed sql type */ public static enum SQL_STATEMENT_TYPE {NONE, PREPARED_STATEMENT}; /** executed sql history type */ public static enum EXECUTE_SQL_TYPE {EDITOR, SESSION, API}; /** 쿼리 실행 결과 */ public static enum QUERY_EXECUTE_STATUS {SUCCESS, USER_INTERRUPT, SQL_EXCEPTION, UNKNOW_EXCEPTION}; /** 데이터 수정 상태를 가르킵니다 */ public static enum DATA_STATUS {NEW, MODIFY, DEL}; /** 기본 상태 정의 */ public static enum BASIC_STATUS {NONE, START, DONE}; /** objec explorer에서 정의한 action */ public static enum OBJECT_TYPE { TABLES, VIEWS, SYNONYM, SEQUENCE, LINK, INDEXES, CONSTRAINTS, PROCEDURES, PROCEDURE_PARAMETER, FUNCTIONS, TRIGGERS, COLLECTIONS, JAVASCRIPT, PACKAGES, SCHEDULE, COLUMNS, JOBS, JAVA, VERTEX, /* agens graph vertex */ EDGE, /* agens graph vertex */ GRAPHPATH /* agens graph path */ }; /** sql type - http://www.orafaq.com/faq/what_are_the_difference_between_ddl_dml_and_dcl_commands */ public static enum SQL_TYPE {DDL, DML};//, DCL, TCL}; /** query type */ public static enum QUERY_DML_TYPE {SELECT, EXPLAIN_PLAN, INSERT, UPDATE, DELETE, UNKNOWN}; /** query ddl type */ public static enum QUERY_DDL_STATUS {CREATE, ALTER, DROP, UNKNOWN}; public static enum QUERY_DDL_TYPE {TABLE, VIEW, SEQUENCE, INDEX, PROCEDURE, FUNCTION, TRIGGER, PACKAGE, SYNONYM, LINK, JOBS, JAVA, UNKNOWN}; public static String[] DB_PRIMARY_KEY = { "PRI", "PK", "PRIMARY", "PRIMARY KEY", // pgsql }; public static String[] DB_FOREIGN_KEY = { "FK", "FOREIGN KEY", // pgsql }; public static String[] DB_MULTI_KEY = { "MUL", "PRIMARY KEY,FOREIGN KEY" // pgsql }; /** * is primary key * @param key * @return */ public static boolean isPK(String key) { for(String searchKey : DB_PRIMARY_KEY) { if(searchKey.equalsIgnoreCase(key)) return true; } return false; } /** * is foreign key * @param key * @return */ public static boolean isFK(String key) { for(String searchKey : DB_FOREIGN_KEY) { if(searchKey.equalsIgnoreCase(key)) return true; } return false; } /** * is multi key * @param key * @return */ public static boolean isMUL(String key) { for(String searchKey : DB_MULTI_KEY) { if(searchKey.equalsIgnoreCase(key)) return true; } return false; } /** * is key * @param key * @return */ public static boolean isKEY(String key) { return isKEY(key, YES_NO.NO.name()); } public static boolean isKEY(String key, String isNull) { boolean isReturn = true; // 컬럼이 null허용이면 false if(isPK(key)) if("YES".equals(isNull)) return false; //$NON-NLS-1$ if(isFK(key)) if("YES".equals(isNull)) return false; //$NON-NLS-1$ if(isMUL(key)) if("YES".equals(isNull)) return false; //$NON-NLS-1$ return isReturn; } }