1 23 24 package com.sun.jdo.api.persistence.mapping.ejb; 25 26 import java.util.ArrayList ; 27 import java.util.List ; 28 import java.util.ResourceBundle ; 29 30 import org.netbeans.modules.schema2beans.BaseBean; 31 import org.netbeans.modules.schema2beans.GraphManager; 32 import org.netbeans.modules.schema2beans.BaseProperty; 33 34 import com.sun.jdo.api.persistence.mapping.ejb.beans.*; 35 36 37 41 public class SunCmpMappingsUtils { 42 private static ResourceBundle bundle = 43 ResourceBundle.getBundle("com.sun.jdo.api.persistence.mapping.ejb.Bundle"); 45 46 47 private SunCmpMappingsUtils() { 48 } 49 50 57 public static SunCmpMapping getFirstSunCmpMapping(SunCmpMappings scms, boolean addEmpty) { 58 SunCmpMapping retVal = null; 59 if (0 < scms.sizeSunCmpMapping()) 60 retVal = scms.getSunCmpMapping(0); 61 if ((null == retVal) && addEmpty) { 62 retVal = new SunCmpMapping(); 63 scms.addSunCmpMapping(retVal); 64 } 65 return retVal; 66 } 67 68 69 79 public static EntityMapping findEntityMapping(SunCmpMappings scms, String bname, boolean addEmpty) throws IllegalArgumentException { 80 EntityMapping retVal = (EntityMapping) findSingleCompatibleBean( 81 "scms", scms, "bname", bname, "ejb-name", EntityMapping.class); if ((null == retVal) && addEmpty) { 83 retVal = new EntityMapping(); 84 retVal.setEjbName(bname); 85 SunCmpMapping scm = getFirstSunCmpMapping(scms, addEmpty); 86 scm.addEntityMapping(retVal); 87 } 88 return retVal; 89 } 90 91 101 public static CmrFieldMapping findCmrFieldMapping(EntityMapping em, String fname, boolean addEmpty) throws IllegalArgumentException { 102 CmrFieldMapping retVal = (CmrFieldMapping) findSingleCompatibleBean( 103 "em", em, "fname", fname, "cmr-field-name", CmrFieldMapping.class); if ((null == retVal) && addEmpty) { 105 retVal = new CmrFieldMapping(); 106 retVal.setCmrFieldName(fname); 107 em.addCmrFieldMapping(retVal); 108 } 109 return retVal; 110 } 111 112 122 public static CmpFieldMapping findCmpFieldMapping(EntityMapping em, String fname, boolean addEmpty) throws IllegalArgumentException { 123 CmpFieldMapping retVal = (CmpFieldMapping) findSingleCompatibleBean( 124 "em", em, "fname", fname, "field-name", CmpFieldMapping.class); if ((null == retVal) && addEmpty) { 126 retVal = new CmpFieldMapping(); 127 retVal.setFieldName(fname); 128 em.addCmpFieldMapping(retVal); 129 } 130 return retVal; 131 } 132 133 134 private static BaseBean findSingleCompatibleBean(String argOneName, BaseBean argOne, String argTwoName, 135 String argTwo, String propName, Class type) { 136 BaseBean retVal = null; 137 if (null == argTwo || argTwo.length() < 1) 138 throw new IllegalArgumentException (argTwoName); 139 140 List l = findCompatibleBeansWithValue(argOne, propName, argTwo, 141 type); 142 if (null != l) { 143 if (l.size() == 1) 144 retVal = (BaseBean) l.get(0); 145 else if (l.size() > 1) 146 throw new IllegalArgumentException (argOneName); 147 } 148 return retVal; 149 } 150 151 163 protected static List findCompatibleBeansWithValue(BaseBean root, String propName, String propVal, Class type) throws IllegalArgumentException { 164 List retVal = null; 165 GraphManager gm = root.graphManager(); 166 if (null == gm) 167 throw new IllegalArgumentException ( 168 bundle.getString("ERR_DISCONNECTED_NOT_SUPPORTED")); 169 String [] props = root.findPropertyValue(propName, propVal); 170 int len = 0; 171 if (null != props) 172 len = props.length; 173 if (len > 0) 174 retVal = new ArrayList (); 175 for (int i = 0; i < len; i++) { 176 BaseBean candidate = gm.getPropertyParent(props[i]); 178 if (type.isInstance(candidate)) 179 retVal.add(candidate); 180 } 181 return retVal; 182 } 183 } 184 | Popular Tags |