import java.sql.SQLException; import java.util.HashMap; import java.util.Map; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import oracle.jdbc.pool.OracleDataSource; import org.apache.commons.lang.StringUtils; import com.opensymphony.module.propertyset.PropertySet; import com.opensymphony.module.propertyset.PropertySetManager; public class PropertySetDemo2 { public static void main(String[] args) throws Exception { PropertySetDemo2 demo = new PropertySetDemo2(); demo.initJNDI(); demo.jdbcPsDemo(); } public void initJNDI() throws NamingException, SQLException { //生成一个DataSource实例 OracleDataSource ds = new OracleDataSource(); ds.setDriverType("oracle.jdbc.driver.OracleDriver"); ds.setURL("jdbc:oracle:thin:@localhost:1521:oracl"); ds.setUser("user"); ds.setPassword("password"); //注册JNDI System.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.naming.java.javaURLContextFactory"); Context context = new InitialContext(); context.bind("awp1", ds); } public void jdbcPsDemo() { System.out.println(StringUtils.center("JDBC PropertySet Demo", 80, '*')); Map<String, String> map = new HashMap<String, String>(); map.put("globalKey", "a");//不可缺省。不同项目或不同模块可以用不同的globalKey,并且持久化到同一个表中 PropertySet ps = PropertySetManager.getInstance("jdbc", map); ps.setBoolean("BooleanPS", true); ps.setString("name", "Jack"); ps.setDouble("dvalue", 0.1234567); System.out.println(ps.getBoolean("BooleanPS")); System.out.println(ps.getString("name")); System.out.println(ps.getDouble("dvalue")); System.out.println(StringUtils.repeat("*", 80)); } }
import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.util.HashMap; import org.apache.commons.io.IOUtils; import org.apache.commons.lang.StringUtils; import com.opensymphony.module.propertyset.PropertySet; import com.opensymphony.module.propertyset.PropertySetManager; import com.opensymphony.module.propertyset.xml.XMLPropertySet; public class PropertySetDemo { public static void main(String[] args) throws Exception { PropertySetDemo demo = new PropertySetDemo(); demo.mapPsDemo(); demo.memoryPsDemo(); demo.xmlPsDemo(); } public void memoryPsDemo() { System.out.println(StringUtils.center("Memory PropertySet Demo", 80, '*')); // memory是配置文件中定义的:<propertyset name="memory" // class="com.opensymphony.module.propertyset.memory.MemoryPropertySet"/> PropertySet ps = PropertySetManager.getInstance("memory", null); ps.setBoolean("BooleanPS", true); ps.setString("name", "Tom"); System.out.println(ps.getBoolean("BooleanPS")); System.out.println(ps.getString("name")); System.out.println(StringUtils.repeat("*", 80)); } public void mapPsDemo() { System.out.println(StringUtils.center("Map PropertySet Demo", 80, '*')); @SuppressWarnings("unchecked") HashMap map = new HashMap(); // memory是配置文件中定义的:<propertyset name="memory" // class="com.opensymphony.module.propertyset.memory.MemoryPropertySet"/> PropertySet ps = PropertySetManager.getInstance("map", map); ps.setBoolean("BooleanPS", true); ps.setString("name", "Tom"); System.out.println(ps.getBoolean("BooleanPS")); System.out.println(ps.getString("name")); System.out.println(StringUtils.repeat("*", 80)); } public void xmlPsDemo() throws Exception { System.out.println(StringUtils.center("XML PropertySet Demo", 80, '*')); PropertySet ps = PropertySetManager.getInstance("xml", null); InputStream is = new FileInputStream("config.xml"); ((XMLPropertySet) ps).load(is); IOUtils.closeQuietly(is); System.out.println(ps.getBoolean("aa")); System.out.println(ps.getInt("ab")); System.out.println(ps.getLong("ac")); System.out.println(ps.getDouble("ad")); System.out.println(ps.getString("ae")); System.out.println(ps.getText("af").trim()); System.out.println(ps.getDate("ag")); System.out.println(ps.getProperties("ai")); ps.setBoolean("aa", false); ((XMLPropertySet) ps).save(new FileOutputStream("config.xml")); System.out.println(StringUtils.repeat("*", 80)); } }
<?xml version="1.0" encoding="UTF-8"?> <propertysets> <propertyset name="jdbc" class="com.opensymphony.module.propertyset.database.JDBCPropertySet"> <arg name="datasource" value="awp1" /> <arg name="table.name" value="OS_PROPERTYENTRY" /> <arg name="col.globalKey" value="GLOBAL_KEY" /> <arg name="col.itemKey" value="ITEM_KEY" /> <arg name="col.itemType" value="ITEM_TYPE" /> <arg name="col.string" value="STRING_VALUE" /> <arg name="col.date" value="DATE_VALUE" /> <arg name="col.data" value="DATA_VALUE" /> <arg name="col.float" value="FLOAT_VALUE" /> <arg name="col.number" value="NUMBER_VALUE" /> </propertyset> </propertysets>
<?xml version="1.0" ?> <property-set> <property key="aa" type="boolean">false</property> <property key="ab" type="int">123</property> <property key="ac" type="long">98765432109</property> <property key="ad" type="double">2.3</property> <property key="ae" type="string">abcde</property> <property key="af" type="text"> fghijk </property> <property key="ag" type="date">2009-18-30 21:18:00</property> <property key="ai" type="properties"> <properties> <property key="passord" type="string">pwd</property> <property key="username" type="string">testuser</property> </properties> </property> </property-set>
create table OS_PROPERTYENTRY ( GLOBAL_KEY VARCHAR2(255) not null, ITEM_KEY VARCHAR2(255) not null, ITEM_TYPE INTEGER, STRING_VALUE VARCHAR2(255), DATE_VALUE DATE, DATA_VALUE BLOB, FLOAT_VALUE FLOAT, NUMBER_VALUE INTEGER );