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
  }
Exemple #2
0
  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();
  }