📄 hsqldatabaseproperties.java
字号:
// type of logging (0 : text , 1 : binary, 3 : compressed) setProperty(hsqldb_script_format, 0); setProperty(db_readonly, false); setProperty(db_modified, "no-new-files"); // initial method of data file access setProperty(hsqldb_nio_data_file, true); // set default table type to MEMORY setProperty(hsqldb_default_table_type, "memory"); // the property "version" is also set to the current version // // the following properties can be set by the user as defaults for // text tables. the default values are shown. // "textdb.fs", "," // "textdb.vs", ","; // "textdb.lvs", "," // "textdb.ignore_first", false // "textdb.quoted", true // "textdb.all_quoted", false // "textdb.encoding", "ASCII" // "textdb.cache_scale", 10 -- allowed range 8-16 // "textdb.cache_size_scale", 10 -- allowed range 8-20 // // settings for OOo integration if (db.isStoredFileAccess()) { setProperty(hsqldb_default_table_type, "cached"); setProperty(hsqldb_cache_scale, 13); setProperty(hsqldb_log_size, 10); setProperty(sql_enforce_strict_size, true); setProperty(hsqldb_nio_data_file, false); } } /** * Creates file with defaults if it didn't exist. * Returns false if file already existed. */ public boolean load() throws HsqlException { boolean exists; if (!DatabaseURL.isFileBasedDatabaseType(database.getType())) { return true; } try { exists = super.load(); } catch (Exception e) { throw Trace.error(Trace.FILE_IO_ERROR, Trace.LOAD_SAVE_PROPERTIES, new Object[] { fileName, e }); } if (!exists) { return false; } filterLoadedProperties(); String version = getProperty(hsqldb_compatible_version); // do not open if the database belongs to a later (future) version int check = version.substring(0, 5).compareTo(THIS_VERSION); Trace.check(check <= 0, Trace.WRONG_DATABASE_FILE_VERSION); version = getProperty(db_version); if (version.charAt(2) == '6') { setProperty(hsqldb_cache_version, "1.6.0"); } JavaSystem.gcFrequency = getIntegerProperty(runtime_gc_interval, 0); return true; } /** * Sets the database member variables after creating the properties object, * openning a properties file, or changing a property with a command */ public void setDatabaseVariables() { if (isPropertyTrue(db_readonly)) { database.setReadOnly(); } if (isPropertyTrue(hsqldb_files_readonly)) { database.setFilesReadOnly(); } database.sqlEnforceStrictSize = isPropertyTrue(sql_enforce_strict_size); if (isPropertyTrue(sql_compare_in_locale)) { stringProps.remove(sql_compare_in_locale); database.collation.setCollationAsLocale(); } database.txManager.setReWriteProtection( isPropertyTrue(sql_tx_no_multi_write)); database.setMetaDirty(false); } public void save() throws HsqlException { if (!DatabaseURL.isFileBasedDatabaseType(database.getType()) || database.isFilesReadOnly() || database.isFilesInJar()) { return; } try { super.save(fileName + ".properties" + ".new"); fa.renameElement(fileName + ".properties" + ".new", fileName + ".properties"); } catch (Exception e) { database.logger.appLog.logContext(SimpleLog.LOG_ERROR, "failed"); throw Trace.error(Trace.FILE_IO_ERROR, Trace.LOAD_SAVE_PROPERTIES, new Object[] { fileName, e }); } } void filterLoadedProperties() { Enumeration en = stringProps.propertyNames(); while (en.hasMoreElements()) { String key = (String) en.nextElement(); boolean accept = meta.containsKey(key); if (!accept) { stringProps.remove(key); } } } /** * overload file database properties with any passed on URL line * do not store password etc */ public void setURLProperties(HsqlProperties p) { if (p != null) { for (Enumeration e = p.propertyNames(); e.hasMoreElements(); ) { String propertyName = (String) e.nextElement(); Object[] row = (Object[]) meta.get(propertyName); if (row != null && (db_readonly.equals(propertyName) || ((Integer) row[indexAccess]).intValue() == SET_PROPERTY)) { // can add error checking with defaults setProperty(propertyName, p.getProperty(propertyName)); } } } } public Set getUserDefinedPropertyData() { Set set = new HashSet(); Iterator it = meta.values().iterator(); while (it.hasNext()) { Object[] row = (Object[]) it.next(); if (((Integer) row[indexAccess]).intValue() == SET_PROPERTY) { set.add(row); } } return set; } public boolean isUserDefinedProperty(String key) { Object[] row = (Object[]) meta.get(key); return row != null && ((Integer) row[indexAccess]).intValue() == SET_PROPERTY; } public boolean isBoolean(String key) { Object[] row = (Object[]) meta.get(key); return row != null && row[indexClass].equals("boolean") && ((Integer) row[indexAccess]).intValue() == SET_PROPERTY; } public boolean isIntegral(String key) { Object[] row = (Object[]) meta.get(key); return row != null && row[indexClass].equals("int") && ((Integer) row[indexAccess]).intValue() == SET_PROPERTY; } public boolean isString(String key) { Object[] row = (Object[]) meta.get(key); return row != null && row[indexClass].equals("java.lang.String") && ((Integer) row[indexAccess]).intValue() == SET_PROPERTY; } public String setDatabaseProperty(String key, String value) throws HsqlException { Object[] row = (Object[]) meta.get(key); // can check bounds here value = super.setProperty(key, value); return value; } public int getDefaultWriteDelay() { return database.isStoredFileAccess() ? 2000 : 10000; } public void setDBModified(int mode) throws HsqlException { String value = MODIFIED_NO; if (mode == FILES_MODIFIED) { value = MODIFIED_YES; } else if (mode == FILES_NEW) { value = MODIFIED_NEW; } setProperty(db_modified, value); save(); } public int getDBModified() throws HsqlException { String value = getProperty("modified"); if (MODIFIED_YES.equals(value)) { return FILES_MODIFIED; } else if (MODIFIED_NEW.equals(value)) { return FILES_NEW; } return FILES_NOT_MODIFIED; } private static Object[] getMeta(String name, int accessLevel, String defaultValue) { Object[] row = new Object[indexLimit]; row[indexName] = name; row[indexAccess] = ValuePool.getInt(accessLevel); row[indexClass] = "java.lang.String"; row[indexDefaultValue] = defaultValue; return row; } private static Object[] getMeta(String name, int accessLevel, boolean defaultValue) { Object[] row = new Object[indexLimit]; row[indexName] = name; row[indexAccess] = ValuePool.getInt(accessLevel); row[indexClass] = "boolean"; row[indexDefaultValue] = defaultValue ? Boolean.TRUE : Boolean.FALSE; return row; } private static Object[] getMeta(String name, int accessLevel, int defaultValue, byte[] values) { Object[] row = new Object[indexLimit]; row[indexName] = name; row[indexAccess] = ValuePool.getInt(accessLevel); row[indexClass] = "int"; row[indexDefaultValue] = ValuePool.getInt(defaultValue); row[indexValues] = values; return row; } private static Object[] getMeta(String name, int accessLevel, int defaultValue, int rangeLow, int rangeHigh) { Object[] row = new Object[indexLimit]; row[indexName] = name; row[indexAccess] = ValuePool.getInt(accessLevel); row[indexClass] = "int"; row[indexDefaultValue] = ValuePool.getInt(defaultValue); row[indexIsRange] = Boolean.TRUE; row[indexRangeLow] = ValuePool.getInt(rangeLow); row[indexRangeHigh] = ValuePool.getInt(rangeHigh); return row; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -