1 19 package org.openharmonise.rm.resources.metadata.properties; 20 21 import java.sql.*; 22 import java.util.*; 23 import java.util.logging.*; 24 25 import org.openharmonise.commons.cache.*; 26 import org.openharmonise.commons.dsi.*; 27 import org.openharmonise.commons.dsi.dml.SelectStatement; 28 import org.openharmonise.rm.DataAccessException; 29 import org.openharmonise.rm.factory.*; 30 import org.openharmonise.rm.resources.AbstractObject; 31 import org.openharmonise.rm.resources.lifecycle.*; 32 33 34 42 public class PropertyFactory implements EditEventListener { 43 44 48 private static Map NAME_2_PROP_MAP = new Hashtable(); 49 50 53 private static final Logger m_logger = Logger.getLogger(PropertyFactory.class.getName()); 54 55 61 private PropertyFactory() { 62 super(); 63 } 64 65 73 public static Property getPropertyFromName(AbstractDataStoreInterface dsi, String sPropName) throws HarmoniseFactoryException { 74 Property prop = null; 75 76 try { 77 78 CachePointer propPtr = (CachePointer) NAME_2_PROP_MAP.get(sPropName.intern()); 79 80 if(propPtr == null) { 81 synchronized (NAME_2_PROP_MAP) { 83 propPtr = (CachePointer) NAME_2_PROP_MAP.get(sPropName.intern()); 84 85 if(propPtr == null) { 86 SelectStatement select = new SelectStatement(); 87 88 select.addSelectColumn(AbstractObject.getColumnRef(Property.class.getName(),AbstractObject.ATTRIB_ID)); 89 select.addSelectColumn(AbstractObject.getColumnRef(Property.class.getName(),AbstractObject.ATTRIB_TYPE)); 90 select.addWhereCondition(AbstractObject.getColumnRef(Property.class.getName(),AbstractObject.TAG_NAME),"=",sPropName); 91 92 ResultSet rs = dsi.execute(select); 93 94 95 if(rs.next()) { 96 int nId = rs.getInt(1); 97 String sClass = rs.getString(2); 98 99 prop = (Property) HarmoniseObjectFactory.instantiateHarmoniseObject(dsi,sClass,nId); 100 try { 101 propPtr = CacheHandler.getInstance(dsi).getCachePointer(prop); 102 } catch (CacheException e) { 103 throw new HarmoniseFactoryException(e); 104 } 105 106 NAME_2_PROP_MAP.put(sPropName.intern(),propPtr); 107 } 108 109 rs.close(); 110 } 111 } 112 113 } else { 114 try { 115 prop = (Property) propPtr.getObject(); 116 117 if(prop.exists() == false) { 118 prop = null; 119 NAME_2_PROP_MAP.remove(sPropName); 120 } 121 } catch (CacheException e) { 122 throw new HarmoniseFactoryException(e); 123 } 124 } 125 126 } catch (DataStoreException e) { 127 throw new HarmoniseFactoryException("ds error",e); 128 } catch (SQLException e) { 129 throw new HarmoniseFactoryException("sql error",e); 130 } 131 132 133 return prop; 134 } 135 136 139 public void workflowObjectSaved(EditEvent event) { 140 142 } 143 144 147 public void workflowObjectStatusChanged(EditEvent event) { 148 150 } 151 152 155 public void workflowObjectArchived(EditEvent event) { 156 Property prop = (Property) event.getSource(); 157 String sName; 158 try { 159 sName = prop.getName(); 160 161 } catch (DataAccessException e) { 162 m_logger.log(Level.WARNING, e.getLocalizedMessage(), e); 163 } 164 165 } 166 167 170 public void workflowObjectReactivated(EditEvent event) { 171 173 } 174 175 178 public void workflowObjectLocked(EditEvent event) { 179 181 } 182 183 186 public void workflowObjectUnlocked(EditEvent event) { 187 189 } 190 191 } 192 | Popular Tags |