1 package org.apache.ojb.broker.util.sequence; 2 3 17 18 import java.util.Properties ; 19 20 import org.apache.ojb.broker.PersistenceBroker; 21 import org.apache.ojb.broker.accesslayer.JdbcAccess; 22 import org.apache.ojb.broker.metadata.ClassDescriptor; 23 import org.apache.ojb.broker.metadata.FieldDescriptor; 24 import org.apache.ojb.broker.metadata.SequenceDescriptor; 25 import org.apache.ojb.broker.platforms.Platform; 26 27 37 public abstract class AbstractSequenceManager implements SequenceManager 38 { 39 public static final String PROPERTY_AUTO_NAMING = "autoNaming"; 41 protected static final String GLOBAL_SEQUENCE_NAME = "ojb.global.sequence"; 42 43 private PersistenceBroker brokerForClass; 44 private Platform platform; 45 private Properties configurationProperties; 46 47 54 public AbstractSequenceManager(PersistenceBroker broker) 55 { 56 this.brokerForClass = broker; 57 this.configurationProperties = new Properties (); 58 this.platform = brokerForClass.serviceConnectionManager().getSupportedPlatform(); 59 SequenceDescriptor sd = brokerForClass.serviceConnectionManager(). 60 getConnectionDescriptor().getSequenceDescriptor(); 61 if (sd != null) 62 { 63 this.configurationProperties.putAll(sd.getConfigurationProperties()); 64 } 65 } 66 67 71 abstract protected long getUniqueLong(FieldDescriptor field) throws SequenceManagerException; 72 73 74 public Platform getPlatform() 75 { 76 return platform; 77 } 78 79 public PersistenceBroker getBrokerForClass() 80 { 81 return brokerForClass; 82 } 83 84 public Properties getConfigurationProperties() 85 { 86 return this.configurationProperties; 87 } 88 89 public void setConfigurationProperties(Properties prop) 90 { 91 this.configurationProperties.putAll(prop); 92 } 93 94 public String getConfigurationProperty(String key, String defaultValue) 95 { 96 String result = this.configurationProperties.getProperty(key); 97 return result != null ? result : defaultValue; 98 } 99 100 public void setConfigurationProperty(String key, String value) 101 { 102 this.configurationProperties.setProperty(key, value); 103 } 104 105 public boolean useAutoNaming() 106 { 107 return (Boolean.valueOf(getConfigurationProperty(PROPERTY_AUTO_NAMING, "true"))).booleanValue(); 108 } 109 110 public String calculateSequenceName(FieldDescriptor field) throws SequenceManagerException 111 { 112 String seqName; 113 seqName = field.getSequenceName(); 114 118 if(seqName == null) 119 { 120 seqName = SequenceManagerHelper.buildSequenceName(getBrokerForClass(), field, useAutoNaming()); 121 } 124 return seqName; 125 } 126 127 128 138 public Object getUniqueValue(FieldDescriptor field) throws SequenceManagerException 139 { 140 Object result = field.getJdbcType().sequenceKeyConversion(new Long (getUniqueLong(field))); 141 result = field.getFieldConversion().sqlToJava(result); 144 return result; 145 } 146 147 150 public void afterStore(JdbcAccess dbAccess, ClassDescriptor cld, Object obj) 151 throws SequenceManagerException 152 { 153 } 155 156 159 public void setReferenceFKs(Object obj, ClassDescriptor cld) 160 throws SequenceManagerException 161 { 162 } 164 } 165 | Popular Tags |