private Object convertSingleValue( Column modelElement, String modelAttrName, Class<?> modelAttrClass, Object objResult) throws TranslatorException, InvalidNameException { if (objResult == null) { return null; } // GHH 20080326 - if attribute is not a string or empty, just // return null. if (!(objResult instanceof String)) { return objResult; } String strResult = (String) objResult; // MPW - 3.9.07 - Also return NULL when attribute is unset or empty string. // There is no way to differentiate between being unset and being the empty string. if (strResult.equals("")) { // $NON-NLS-1$ return null; } // MPW: 3-11-07: Added support for java.lang.Integer conversion. if (TypeFacility.RUNTIME_TYPES.TIMESTAMP.equals(modelAttrClass)) { String timestampFormat = modelElement.getFormat(); if (timestampFormat == null) { timestampFormat = LDAPConnectorConstants.ldapTimestampFormat; } SimpleDateFormat dateFormat = new SimpleDateFormat(timestampFormat); try { Date dateResult = dateFormat.parse(strResult); Timestamp tsResult = new Timestamp(dateResult.getTime()); return tsResult; } catch (ParseException pe) { throw new TranslatorException( pe, LDAPPlugin.Util.getString( "LDAPSyncQueryExecution.timestampParseFailed", modelAttrName)); // $NON-NLS-1$ } // TODO: Extend support for more types in the future. // Specifically, add support for byte arrays, since that's actually supported // in the underlying data source. } // extract rdn String type = modelElement.getProperty(LDAPExecutionFactory.RDN_TYPE, false); if (type != null) { String prefix = modelElement.getProperty(LDAPExecutionFactory.DN_PREFIX, false); LdapName name = new LdapName(strResult); if (prefix != null) { if (!name.getPrefix(name.size() - 1).toString().equals(prefix)) { throw new InvalidNameException(); } } else if (name.size() > 1) { throw new InvalidNameException(); } Rdn rdn = name.getRdn(name.size() - 1); if (!rdn.getType().equals(type)) { throw new InvalidNameException(); } return rdn.getValue(); } return strResult; // the Teiid type conversion logic will handle refine from here if necessary }
public static void main(String args[]) throws Exception { String[] rdnStr = new String[] {"one=voilet"}; ArrayList rdnList = new ArrayList(); for (int i = 0; i < rdnStr.length; i++) { rdnList.add(i, new Rdn(rdnStr[i])); } LdapName dn = new LdapName(rdnList); Collection rdns = dn.getRdns(); System.out.println("size is :" + dn.size()); System.out.println("isEmpty :" + dn.isEmpty()); System.out.println("************Printing as Rdns*********"); Iterator iter = rdns.iterator(); while (iter.hasNext()) { System.out.println(iter.next()); } System.out.println(); System.out.println("************Printing the Enumeration*********"); Enumeration dnEnum = dn.getAll(); while (dnEnum.hasMoreElements()) { System.out.println(dnEnum.nextElement()); } // addAll tests System.out.println(); LdapName nameSuffix = new LdapName("two=Indigo"); System.out.println("addAll():" + dn.addAll(nameSuffix)); ArrayList list = new ArrayList(); list.add(new Rdn("five=Yellow")); System.out.println("Rdn- addAll():" + dn.addAll(list)); nameSuffix = new LdapName("three=Blue"); System.out.println(); System.out.println("addAll at pos = 2"); System.out.println("addAll():" + dn.addAll(2, nameSuffix)); list = new ArrayList(); list.add(new Rdn("four=Green")); System.out.println(); System.out.println("addAll at pos = 3"); System.out.println("Rdn- addAll():" + dn.addAll(3, list)); // add() tests Rdn rdn; System.out.println(); System.out.println("add():" + dn.add("eight=white")); rdn = new Rdn("nine=Black"); System.out.println(); System.out.println("Rdn- add():" + dn.add(rdn)); /* Rdn nullRdn = null; System.out.println("Rdn- add() with null RDN:" + dn.add(nullRdn)); */ System.out.println(); System.out.println("add() at pos 5"); System.out.println("add():" + dn.add(5, "six=Orange")); rdn = new Rdn("six=Orange"); System.out.println(); System.out.println("add() at pos 6"); System.out.println("Rdn- add():" + dn.add(6, "seven=Red")); // remove tests System.out.println(); System.out.println("Removing entries at positions: 7, 8"); System.out.println("Removed:" + dn.remove(8)); System.out.println("Removed:" + dn.remove(7)); // get tests System.out.println(); System.out.println("toString():" + dn); int size = dn.size(); System.out.println("get(0):" + dn.get(0)); System.out.println("get(size() - 1):" + dn.get(size - 1)); System.out.println("getRdn(0):" + dn.getRdn(0)); System.out.println("getRdn(size() - 1):" + dn.getRdn(size - 1)); System.out.println(); System.out.println("********Prefixes**********"); System.out.println("getPrefix(0):" + dn.getPrefix(0)); System.out.println("getPrefix(size / 2):" + dn.getPrefix(size / 2)); System.out.println("getPrefix(size):" + dn.getPrefix(size)); System.out.println(); System.out.println("********Suffixes**********"); System.out.println("getSuffix(0):" + dn.getSuffix(0)); System.out.println("getSuffix(size/2):" + dn.getSuffix(size / 2)); System.out.println("getSuffix(size):" + dn.getSuffix(size)); System.out.println(); System.out.println("startsWith(" + rdnStr[0] + "):" + dn.startsWith(new LdapName(rdnStr[0]))); String lastEntry = "seven=red"; System.out.println("startsWith(" + lastEntry + "):" + dn.startsWith(new LdapName(lastEntry))); System.out.println( "compositeName- startsWith(" + rdnStr[0] + "): " + dn.startsWith(new CompositeName(rdnStr[0]))); java.util.List prefixList = (dn.getRdns()).subList(0, size / 2); System.out.println("Rdn - startsWith(" + prefixList + "):" + dn.startsWith(prefixList)); System.out.println("Rdn - startsWith() - empty RDN list:" + dn.startsWith(new ArrayList())); System.out.println(); System.out.println("endsWith(" + rdnStr[0] + "):" + dn.endsWith(new LdapName(rdnStr[0]))); System.out.println("endsWith(" + lastEntry + "):" + dn.endsWith(new LdapName(lastEntry))); System.out.println( "compositeName- endsWith(" + rdnStr[0] + "): " + dn.endsWith(new CompositeName(rdnStr[0]))); System.out.println("Rdn - endsWith(" + prefixList + "):" + dn.endsWith(prefixList)); System.out.println("Rdn - endsWith() empty RDN list:" + dn.endsWith(new ArrayList())); // test clone System.out.println(); System.out.println("cloned name:" + dn.clone()); // test serialization ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("dn.ser")); out.writeObject(dn); out.close(); ObjectInputStream in = new ObjectInputStream(new FileInputStream("dn.ser")); System.out.println(); System.out.println("Deserialized name:" + in.readObject()); in.close(); }