/**
   * SiteDetail
   *
   * @throws ParseException
   */
  public SiteDetail(
      String idSite,
      String name,
      String description,
      String page,
      int type,
      String creatorId,
      String date,
      int state,
      int popup) {
    super(
        "X",
        name,
        description,
        null,
        null,
        null,
        creatorId,
        new Integer(type).toString(),
        idSite,
        "",
        page);

    if (date != null) {
      Date theCreationDate = null;
      try {
        theCreationDate = DateUtil.parse(date);
      } catch (ParseException e) {

      }
      this.setCreationDate(theCreationDate);
    }
    init(idSite, type, state, popup);
  }
 protected Date parseDate(Property property) {
   String date = metadata.get(property);
   if (date != null) {
     try {
       return DateUtil.parse(date, "yyyy-MM-dd'T'HH:mm:ss'Z'");
     } catch (ParseException ex) {
       return null;
     }
   }
   return null;
 }
  @Test
  public void testGetAllPublicationsIDbyUserid() throws Exception {

    IDatabaseConnection connection = getConnection();
    try {
      Connection con = connection.getConnection();

      String user100 = "100"; // who created  pub1

      String user200 = "200"; // who updated pub1 and pub2
      String pub1Id = "100";

      PublicationDetail detail1 = PublicationDAO.loadRow(con, new PublicationPK(pub1Id));

      // who created  pub1
      SocialInformationPublication sp1 =
          new SocialInformationPublication(new PublicationWithStatus((detail1), false));
      assertNotNull("SocialInformationPublication1 must be not null", sp1);
      List<SocialInformation> list100 = new ArrayList<SocialInformation>();
      list100.add(sp1);

      Date begin = DateUtil.parse("2008/11/01");
      Date end = DateUtil.parse("2008/11/30");

      List<SocialInformation> list100DOA =
          PublicationDAO.getAllPublicationsIDbyUserid(con, user100, begin, end);
      assertEquals("Must be equal", list100.get(0), list100DOA.get(0));

      // who created pub2
      String user101 = "101"; // who created pub2
      String pub2Id = "101";
      PublicationDetail detail2 = PublicationDAO.loadRow(con, new PublicationPK(pub2Id));
      SocialInformationPublication sp2 =
          new SocialInformationPublication(new PublicationWithStatus((detail2), false));
      assertNotNull("SocialInformationPublication2 must be not null", sp2);

      List<SocialInformation> list101 = new ArrayList<SocialInformation>();
      list101.add(sp2);
      List<SocialInformation> list101DOA =
          PublicationDAO.getAllPublicationsIDbyUserid(con, user101, begin, end);
      assertTrue("Must be equal", list101.get(0).equals(list101DOA.get(0)));

      // who updated pub1 and pub2
      begin = DateUtil.parse("2009/11/01");
      end = DateUtil.parse("2009/11/30");
      SocialInformationPublication sp1User200 =
          new SocialInformationPublication(new PublicationWithStatus((detail1), true));
      assertNotNull("SocialInformationPublication2 must be not null", sp1User200);
      SocialInformationPublication sp2User200 =
          new SocialInformationPublication(new PublicationWithStatus((detail2), true));
      assertNotNull("SocialInformationPublication2 must be not null", sp2User200);
      List<SocialInformation> list200 = new ArrayList<SocialInformation>();
      list200.add(sp2User200);
      list200.add(sp1User200);
      List<SocialInformation> list200DOA =
          PublicationDAO.getAllPublicationsIDbyUserid(con, user200, begin, end);
      assertEquals("Must be equal", list200.get(0), list200DOA.get(0));
      assertEquals("Must be equal", list200.get(1), list200DOA.get(1));

      // test nbr of elements
      list200DOA = PublicationDAO.getAllPublicationsIDbyUserid(con, user200, begin, end);
      assertEquals("Must be equal", list200.get(0), list200DOA.get(0));
      List<String> options = new ArrayList<String>();
      options.add("kmelia200");
      List<String> myContactsIds = new ArrayList<String>();
      myContactsIds.add(user100);
      myContactsIds.add(user200);
      list200DOA =
          PublicationDAO.getSocialInformationsListOfMyContacts(
              con, myContactsIds, options, begin, end);
      assertNotNull("SocialInformationPublication of my contact must be not null", list200DOA);
      assertTrue(
          "SocialInformationPublication of my contact must be not empty", !list200DOA.isEmpty());
    } finally {
      connection.close();
    }
  }
  /** getSilverpeasBeanFromResultSet */
  private T getSilverpeasBeanFromResultSet(WAPrimaryKey pk, ResultSet rs) throws Exception {

    T bean = silverpeasBeanClass.newInstance();
    int count = 1;

    for (PropertyDescriptor property : properties) {
      String type = property.getPropertyType().getName();
      if (isInteger(type)) {
        int value = rs.getInt(count);
        if (!rs.wasNull()) {
          Object[] parameters = new Integer[] {value};
          property.getWriteMethod().invoke(bean, parameters);
        }
        count++;
      } else if (isLong(type)) {
        long value = rs.getLong(count);
        if (!rs.wasNull()) {
          Object[] parameters = new Long[] {value};
          property.getWriteMethod().invoke(bean, parameters);
        }
        count++;
      } else if (isBoolean(type)) {
        boolean value = rs.getBoolean(count);
        if (!rs.wasNull()) {
          Object[] parameters = new Boolean[] {value};
          property.getWriteMethod().invoke(bean, parameters);
        }
        count++;
      } else if (isString(type)) {
        String value = rs.getString(count);
        if (value != null) {
          Object[] parameters = new String[1];
          parameters[0] = value;
          property.getWriteMethod().invoke(bean, parameters);
        }
        count++;
      } else if (isDate(type)) {
        String value = rs.getString(count);
        if (value != null) {
          Object[] parameters = new Date[1];
          try {
            parameters[0] = DateUtil.parse(value);
          } catch (Exception e) {
            SilverTrace.error(
                "persistence",
                "SilverpeasBeanDAOImpl.getSilverpeasBeanFromResultSet(WAPrimaryKey pk, ResultSet rs)",
                "root.EX_CANT_PARSE_DATE",
                "property Name = " + property.getName() + ", date= " + value);
            throw e;
          }
          property.getWriteMethod().invoke(bean, parameters);
        }
        count++;
      } else if (isFloat(type)) {
        float value = rs.getFloat(count);
        if (!rs.wasNull()) {
          Object[] parameters = new Float[] {value};
          property.getWriteMethod().invoke(bean, parameters);
        }
        count++;
      } else if ((type.equals("double")) || (type.equals("java.lang.Double"))) {
        double value = rs.getDouble(count);
        if (!rs.wasNull()) {
          Object[] parameters = new Double[] {value};
          property.getWriteMethod().invoke(bean, parameters);
        }
        count++;
      }
    }

    Class<? extends WAPrimaryKey> pkClass = pk.getClass();
    String id = rs.getInt(count) + "";
    Class<?> types[] = new Class[2];
    types[0] = String.class;
    types[1] = WAPrimaryKey.class; // pkClass;
    Constructor<? extends WAPrimaryKey> construct = pkClass.getConstructor(types);
    Object[] parameters = new Object[2];
    parameters[0] = id;
    parameters[1] = pk;
    WAPrimaryKey maPk = construct.newInstance(parameters);
    bean.setPK(maPk);
    return bean;
  }