diff --git a/config/licenser/known_exceptions.txt b/config/licenser/known_exceptions.txt index fcb7f4b9..030bf67e 100644 --- a/config/licenser/known_exceptions.txt +++ b/config/licenser/known_exceptions.txt @@ -38,10 +38,5 @@ productMods/js/visualization/entitycomparison/jquery_plugins/* # PROBLEM: Can't find any info on licensing. productMods/js/jquery_plugins/jquery.truncator.js -# See /doc/3rd-party-licenses.txt for LICENSE file -src/edu/cornell/mannlib/semservices/util/ObjectUtils.java -src/edu/cornell/mannlib/semservices/util/XMLGregorianCalendarConverter.java -src/edu/cornell/mannlib/vitro/webapp/utils/ConceptSearchService/BeanToJsonSerializer.java - # Part of the OpenSocial integration - should this really be under the Apache license? themes/wilma/css/openSocial/gadgets.css \ No newline at end of file diff --git a/doc/3rd-party-licenses.txt b/doc/3rd-party-licenses.txt index 89afc60f..79c240bc 100644 --- a/doc/3rd-party-licenses.txt +++ b/doc/3rd-party-licenses.txt @@ -23,6 +23,9 @@ csv dwr ezmorph gson +jackson-annotations-2.3.0 +jackson-core-2.3.0 +jackson-databind-2.3.0 jakarta-jstl jarjar jmeter diff --git a/lib/jackson-annotations-2.3.0.jar b/lib/jackson-annotations-2.3.0.jar new file mode 100644 index 00000000..3901f328 Binary files /dev/null and b/lib/jackson-annotations-2.3.0.jar differ diff --git a/lib/jackson-core-2.3.0.jar b/lib/jackson-core-2.3.0.jar new file mode 100644 index 00000000..15121006 Binary files /dev/null and b/lib/jackson-core-2.3.0.jar differ diff --git a/lib/jackson-databind-2.3.0.jar b/lib/jackson-databind-2.3.0.jar new file mode 100644 index 00000000..32f12f05 Binary files /dev/null and b/lib/jackson-databind-2.3.0.jar differ diff --git a/src/edu/cornell/mannlib/semservices/bo/Day.java b/src/edu/cornell/mannlib/semservices/bo/Day.java deleted file mode 100644 index 1decc4e3..00000000 --- a/src/edu/cornell/mannlib/semservices/bo/Day.java +++ /dev/null @@ -1,751 +0,0 @@ -/* $This file is distributed under the terms of the license in /doc/license.txt$ */ - -package edu.cornell.mannlib.semservices.bo; - -import java.util.Calendar; -import java.util.Date; -import java.util.TimeZone; - -import edu.cornell.mannlib.semservices.util.DateUtils; - -/** - * A time-less and immutable Date class for basic date arithmetics. - * - * @author Jacob Dreyer - */ -public class Day implements Comparable { - /** The back end calendar instance of this day. */ - protected Calendar calendar_ = Calendar.getInstance(); - - /** - * Create a new day. The day is lenient meaning that illegal day parameters - * can be specified and results in a recomputed day with legal month/day - * values. - * - * @param year - * Year of new day. - * @param month - * Month of new day (0-11) - * @param dayOfMonth - * Day of month of new day (1-31) - */ - public Day(int year, int month, int dayOfMonth) { - initialize(year, month, dayOfMonth); - } - - /** - * Create a new day, specifying the year and the day of year. The day is - * lenient meaning that illegal day parameters can be specified and results - * in a recomputed day with legal month/day values. - * - * @param year - * Year of new day. - * @param dayOfYear - * 1=January 1, etc. - */ - public Day(int year, int dayOfYear) { - initialize(year, Calendar.JANUARY, 1); - calendar_.set(Calendar.DAY_OF_YEAR, dayOfYear); - } - - /** - * Create a new day representing the day of creation (according to the - * setting of the current machine). - */ - public Day() { - // Now (in the current locale of the client machine) - Calendar calendar = Calendar.getInstance(); - - // Prune time part - initialize(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), - calendar.get(Calendar.DAY_OF_MONTH)); - } - - /** - * Create a new day based on a java.util.Calendar instance. NOTE: The time - * component from calendar will be pruned. - * - * @param calendar - * Calendar instance to copy. - * @throws IllegalArgumentException - * If calendar is null. - */ - public Day(Calendar calendar) { - if (calendar == null) - throw new IllegalArgumentException("calendar cannot be null"); - - initialize(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), - calendar.get(Calendar.DAY_OF_MONTH)); - } - - /** - * Create a new day based on a java.util.Date instance. NOTE: The time - * component from date will be pruned. - * - * @param date - * Date instance to copy. - * @throws IllegalArgumentException - * If date is null. - */ - public Day(Date date) { - if (date == null) - throw new IllegalArgumentException("date cannot be null"); - - // Create a calendar based on given date - Calendar calendar = Calendar.getInstance(); - calendar.setTime(date); - - // Extract date values and use these only - initialize(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), - calendar.get(Calendar.DAY_OF_MONTH)); - } - - /** - * Create a new day based on a time value. Time is milliseconds since - * "the Epoch" (1.1.1970). NOTE: The time component from time will be pruned. - * - * @param time - * Milliseconds since "the Epoch". - */ - public Day(long time) { - this(new Date(time)); - } - - /** - * Create a new day as a copy of the specified day. - * - * @param day - * Day to clone. - * @throws IllegalArgumentException - * If day is null. - */ - public Day(Day day) { - if (day == null) - throw new IllegalArgumentException("day cannot be null"); - - initialize(day.getYear(), day.getMonth(), day.getDayOfMonth()); - } - - /** - * Initialize the internal calendar instance. - * - * @param year - * Year of new day. - * @param month - * Month of new day. - * @param dayOfMonth - * Day of month of new day. - */ - private void initialize(int year, int month, int dayOfMonth) { - calendar_.setLenient(true); - calendar_.setFirstDayOfWeek(Calendar.MONDAY); - calendar_.setTimeZone(TimeZone.getDefault()); - calendar_.set(Calendar.YEAR, year); - calendar_.set(Calendar.MONTH, month); - calendar_.set(Calendar.DAY_OF_MONTH, dayOfMonth); - - // Prune the time component - calendar_.set(Calendar.HOUR_OF_DAY, 0); - calendar_.set(Calendar.MINUTE, 0); - calendar_.set(Calendar.SECOND, 0); - calendar_.set(Calendar.MILLISECOND, 0); - } - - /** - * A more explicit front-end to the Day() constructor which return a day - * object representing the day of creation. - * - * @return A day instance representing today. - */ - public static Day today() { - return new Day(); - } - - /** - * Return a Calendar instance representing the same day as this instance. For - * use by secondary methods requiring java.util.Calendar as input. - * - * @return Calendar equivalent representing this day. - */ - public Calendar getCalendar() { - return (Calendar) calendar_.clone(); - } - - /** - * Return a Date instance representing the same date as this instance. For - * use by secondary methods requiring java.util.Date as input. - * - * @return Date equivalent representing this day. - */ - public Date getDate() { - return getCalendar().getTime(); - } - - /** - * Compare this day to the specified day. If object is not of type Day a - * ClassCastException is thrown. - * - * @param day - * Day object to compare to. - * @return @see Comparable#compareTo(Object) - * @throws IllegalArgumentException - * If day is null. - */ - public int compareTo(Day day) { - if (day == null) - throw new IllegalArgumentException("day cannot be null"); - - return calendar_.getTime().compareTo(day.calendar_.getTime()); - } - - /** - * Return true if this day is after the specified day. - * - * @param day - * Day to compare to. - * @return True if this is after day, false otherwise. - * @throws IllegalArgumentException - * If day is null. - */ - public boolean isAfter(Day day) { - if (day == null) - throw new IllegalArgumentException("day cannot be null"); - - return calendar_.after(day.calendar_); - } - - /** - * Return true if this day is before the specified day. - * - * @param day - * Day to compare to. - * @return True if this is before day, false otherwise. - * @throws IllegalArgumentException - * If day is null. - */ - public boolean isBefore(Day day) { - if (day == null) - throw new IllegalArgumentException("day cannot be null"); - - return calendar_.before(day.calendar_); - } - - /** - * Return true if this day equals (represent the same date) as the specified - * day. - * - * @param object - * Object to compare to. - * @return True if this equals day, false otherwise. - * @throws IllegalArgumentException - * If day is null. - */ - @Override - public boolean equals(Object object) { - Day day = (Day) object; - - if (day == null) - throw new IllegalArgumentException("day cannot be null"); - - return calendar_.equals(day.calendar_); - } - - /** - * Overload required as default definition of equals() has changed. - * - * @return A hash code value for this object. - */ - @Override - public int hashCode() { - return calendar_.hashCode(); - } - - /** - * Return year of this day. - * - * @return Year of this day. - */ - public int getYear() { - return calendar_.get(Calendar.YEAR); - } - - - - /** - * Return month of this day. The result must be compared to Calendar.JANUARY, - * Calendar.FEBRUARY, etc. - * - * @return Month of this day. - */ - public int getMonth() { - return calendar_.get(Calendar.MONTH); - } - - public String getMonthName() { - switch (getMonth()) { - case Calendar.JANUARY: - return "January"; - case Calendar.FEBRUARY: - return "February"; - case Calendar.MARCH: - return "March"; - case Calendar.APRIL: - return "April"; - case Calendar.MAY: - return "May"; - case Calendar.JUNE: - return "June"; - case Calendar.JULY: - return "July"; - case Calendar.AUGUST: - return "August"; - case Calendar.SEPTEMBER: - return "September"; - case Calendar.OCTOBER: - return "October"; - case Calendar.NOVEMBER: - return "November"; - case Calendar.DECEMBER: - return "December"; - default: - assert false : "Invalid mongth: " + getMonth(); - } - - // This will never happen - return ""; - } - - /** - * Return the 1-based month number of the month of this day. 1 = January, 2 = - * February and so on. - * - * @return Month number of this month - */ - public int getMonthNo() { - // It is tempting to return getMonth() + 1 but this is conceptually - // wrong, as Calendar month is an enumeration and the values are tags - // only and can be anything. - switch (getMonth()) { - case Calendar.JANUARY: - return 1; - case Calendar.FEBRUARY: - return 2; - case Calendar.MARCH: - return 3; - case Calendar.APRIL: - return 4; - case Calendar.MAY: - return 5; - case Calendar.JUNE: - return 6; - case Calendar.JULY: - return 7; - case Calendar.AUGUST: - return 8; - case Calendar.SEPTEMBER: - return 9; - case Calendar.OCTOBER: - return 10; - case Calendar.NOVEMBER: - return 11; - case Calendar.DECEMBER: - return 12; - default: - assert false : "Invalid mongth: " + getMonth(); - } - - // This will never happen - return 0; - } - - /** - * Return day of month of this day. NOTE: First day of month is 1 (not 0). - * - * @return Day of month of this day. - */ - public int getDayOfMonth() { - return calendar_.get(Calendar.DAY_OF_MONTH); - } - - /** - * Return the day number of year this day represents. January 1 = 1 and so - * on. - * - * @return day number of year. - */ - public int getDayOfYear() { - return calendar_.get(Calendar.DAY_OF_YEAR); - } - - /** - * Return the day of week of this day. NOTE: Must be compared to - * Calendar.MONDAY, TUSEDAY etc. - * - * @return Day of week of this day. - */ - public int getDayOfWeek() { - return calendar_.get(Calendar.DAY_OF_WEEK); - } - - /** - * Return the day number of week of this day, where Monday=1, Tuesday=2, ... - * Sunday=7. - * - * @return Day number of week of this day. - */ - public int getDayNumberOfWeek() { - return getDayOfWeek() == Calendar.SUNDAY ? 7 : getDayOfWeek() - - Calendar.SUNDAY; - } - - /** - * Return the week number of year, this day belongs to. 1st=1 and so on. - * - * @return Week number of year of this day. - */ - public int getWeekOfYear() { - return calendar_.get(Calendar.WEEK_OF_YEAR); - } - - /** - * Return a day which is the given number of days after this day. - * - * @param nDays - * Number of days to add. May be negative. - * @return Day as requested. - */ - public Day addDays(int nDays) { - // Create a clone - Calendar calendar = (Calendar) calendar_.clone(); - - // Add/remove the specified number of days - calendar.add(Calendar.DAY_OF_MONTH, nDays); - - // Return new instance - return new Day(calendar); - } - - /** - * Subtract a number of days from this day. - * - * @param nDays - * Number of days to subtract. - * @return Day as requested. - */ - public Day subtractDays(int nDays) { - return addDays(-nDays); - } - - /** - * Return a day wich is a given number of month after this day. - * - * The actual number of days added depends on the staring day. Subtracting a - * number of months can be done by a negative argument to addMonths() or - * calling subtactMonths() explicitly. NOTE: addMonth(n) m times will in - * general give a different result than addMonth(m*n). Add 1 month to January - * 31, 2005 will give February 28, 2005. - * - * @param nMonths - * Number of months to add. - * @return Day as requested. - */ - public Day addMonths(int nMonths) { - // Create a clone - Calendar calendar = (Calendar) calendar_.clone(); - - // Add/remove the specified number of days - calendar.add(Calendar.MONTH, nMonths); - - // Return new instance - return new Day(calendar); - } - - /** - * Subtract a number of months from this day. - * - * @see #addMonths(int). - * - * @param nMonths - * Number of months to subtract. - * @return Day as requested. - */ - public Day subtractMonths(int nMonths) { - return addMonths(-nMonths); - } - - /** - * Return a day wich is a given number of years after this day. - * - * Add a number of years to this day. The actual number of days added depends - * on the starting day. Subtracting a number of years can be done by a - * negative argument to addYears() or calling subtractYears explicitly. - * - * @param nYears - * Number of years to add. - * @return Day as requested. - */ - public Day addYears(int nYears) { - // Create a clone - Calendar calendar = (Calendar) calendar_.clone(); - - // Add/remove the specified number of days - calendar.add(Calendar.YEAR, nYears); - - // Return new instance - return new Day(calendar); - } - - /** - * Subtract a number of years from this day. - * - * @see #addYears(int). - * - * @param nYears - * Number of years to subtract. - * @return Day as requested. - */ - public Day subtractYears(int nYears) { - return addYears(-nYears); - } - - /** - * Return the number of days in the year of this day. - * - * @return Number of days in this year. - */ - public int getDaysInYear() { - return calendar_.getActualMaximum(Calendar.DAY_OF_YEAR); - } - - /** - * Return true if the year of this day is a leap year. - * - * @return True if this year is a leap year, false otherwise. - */ - public boolean isLeapYear() { - return getDaysInYear() == calendar_.getMaximum(Calendar.DAY_OF_YEAR); - } - - /** - * Return true if the specified year is a leap year. - * - * @param year - * Year to check. - * @return True if specified year is leap year, false otherwise. - */ - public static boolean isLeapYear(int year) { - return (new Day(year, Calendar.JANUARY, 1)).isLeapYear(); - } - - /** - * Return the number of days in the month of this day. - * - * @return Number of days in this month. - */ - public int getDaysInMonth() { - return calendar_.getActualMaximum(Calendar.DAY_OF_MONTH); - } - - - - /** - * Get default locale name of this day ("Monday", "Tuesday", etc. - * - * @return Name of day. - */ - public String getDayName() { - switch (getDayOfWeek()) { - case Calendar.MONDAY: - return "Monday"; - case Calendar.TUESDAY: - return "Tuesday"; - case Calendar.WEDNESDAY: - return "Wednesday"; - case Calendar.THURSDAY: - return "Thursday"; - case Calendar.FRIDAY: - return "Friday"; - case Calendar.SATURDAY: - return "Saturday"; - case Calendar.SUNDAY: - return "Sunday"; - default: - assert false : "Invalid day of week: " + getDayOfWeek(); - } - - // This will never happen - return null; - } - - /** - * Get default locale name of this day ("Monday", "Tuesday", etc. - * - * @return Name of day. - */ - public String getShortDayName() { - switch (getDayOfWeek()) { - case Calendar.MONDAY: - return "Mon"; - case Calendar.TUESDAY: - return "Tue"; - case Calendar.WEDNESDAY: - return "Wed"; - case Calendar.THURSDAY: - return "Thu"; - case Calendar.FRIDAY: - return "Fri"; - case Calendar.SATURDAY: - return "Sat"; - case Calendar.SUNDAY: - return "Sun"; - default: - assert false : "Invalid day of week: " + getDayOfWeek(); - } - - // This will never happen - return null; - } - - /** - * Return number of days between two days. The method always returns a - * positive number of days. - * - * @param day - * The day to compare to. - * @return Number of days between this and day. - * @throws IllegalArgumentException - * If day is null. - */ - public int daysBetween(Day day) { - if (day == null) - throw new IllegalArgumentException("day cannot be null"); - - long millisBetween = Math.abs(calendar_.getTime().getTime() - - day.calendar_.getTime().getTime()); - return (int) Math.round(millisBetween / (1000 * 60 * 60 * 24)); - } - - /** - * Find the n'th xxxxday of s specified month (for instance find 1st sunday - * of May 2006; findNthOfMonth (1, Calendar.SUNDAY, Calendar.MAY, 2006); - * Return null if the specified day doesn't exists. - * - * @param n - * Nth day to look for. - * @param dayOfWeek - * Day to look for (Calendar.XXXDAY). - * @param month - * Month to check (Calendar.XXX). - * @param year - * Year to check. - * @return Required Day (or null if non-existent) - * @throws IllegalArgumentException - * if dyaOfWeek parameter doesn't represent a valid day. - */ - public static Day getNthOfMonth(int n, int dayOfWeek, int month, int year) { - // Validate the dayOfWeek argument - - if (dayOfWeek < 1 || dayOfWeek > 7) - throw new IllegalArgumentException("Invalid day of week: " + dayOfWeek); - - Day first = new Day(year, month, 1); - - int offset = dayOfWeek - first.getDayOfWeek(); - if (offset < 0) - offset = 7 + offset; - - int dayNo = (n - 1) * 7 + offset + 1; - - return dayNo > first.getDaysInMonth() ? null - : new Day(year, month, dayNo); - } - - /** - * Find the first of a specific day in a given month. For instance first - * Tuesday of May: getFirstOfMonth(Calendar.TUESDAY, Calendar.MAY, 2005); - * - * @param dayOfWeek - * Weekday to get. - * @param month - * Month of day to get. - * @param year - * Year of day to get. - * @return The requested day. - */ - public static Day getFirstOfMonth(int dayOfWeek, int month, int year) { - return Day.getNthOfMonth(1, dayOfWeek, month, year); - } - - /** - * Find the last of a specific day in a given month. For instance last - * Tuesday of May: getLastOfMonth (Calendar.TUESDAY, Calendar.MAY, 2005); - * - * @param dayOfWeek - * Weekday to get. - * @param month - * Month of day to get. - * @param year - * Year of day to get. - * @return The requested day. - */ - public static Day getLastOfMonth(int dayOfWeek, int month, int year) { - Day day = Day.getNthOfMonth(5, dayOfWeek, month, year); - return day != null ? day : Day.getNthOfMonth(4, dayOfWeek, month, year); - } - - public String getFormattedString(String fmt) { - return DateUtils.getFormattedDate(calendar_.getTime(), fmt); - } - - /** - * Return a scratch string representation of this day. Used for debugging - * only. The format of the day is yyyy-mm-dd - * - * @return A string representation of this day. - */ - @Override - public String toString() { - StringBuffer s = new StringBuffer(); - s.append(getYear()); - s.append('-'); - if (getMonth() < 9) - s.append('0'); - s.append(getMonth() + 1); - s.append('-'); - if (getDayOfMonth() < 10) - s.append('0'); - s.append(getDayOfMonth()); - return s.toString(); - } - - /** - * Testing this class. - * - * @param arguments - * Not used. - */ - public static void main(String[] arguments) { - // This proves that there are 912 days between the two major - // terrorist attacks, not 911 as is common knowledge. - Day september11 = new Day(2001, Calendar.SEPTEMBER, 11); - Day march11 = new Day(2004, Calendar.MARCH, 11); - System.out.println(september11.daysBetween(march11)); - - // This proves that Kennedy was president for 1037 days, - // not 1000 as is the popular belief nor 1036 which is the - // bluffers reply. Nerds knows when to add one... - Day precidency = new Day(1961, Calendar.JANUARY, 20); - Day assasination = new Day(1963, Calendar.NOVEMBER, 22); - System.out.println(precidency.daysBetween(assasination) + 1); - - // Niel Armstrong walked the moon on a Sunday - Day nielOnMoon = new Day(1969, Calendar.JULY, 20); - System.out.println("Niel Armstron walked on the moon on "+ nielOnMoon.getDayName()); - - // Find last tuesdays for 2005 - for (int i = 0; i < 12; i++) { - Day tuesday = Day.getLastOfMonth(Calendar.TUESDAY, i, 2005); - System.out.println(tuesday); - } - } -} diff --git a/src/edu/cornell/mannlib/semservices/bo/Time.java b/src/edu/cornell/mannlib/semservices/bo/Time.java deleted file mode 100644 index 546caa1a..00000000 --- a/src/edu/cornell/mannlib/semservices/bo/Time.java +++ /dev/null @@ -1,259 +0,0 @@ -/* $This file is distributed under the terms of the license in /doc/license.txt$ */ - -package edu.cornell.mannlib.semservices.bo; - -import java.util.Date; -import java.util.Calendar; -import java.util.GregorianCalendar; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -/** - * A class representing a moment in time. Extends Day which represents the day - * of the moment, and defines the time within the day to millisecond accuracy. - * - * @author Jacob Dreyer (jacob.dreyer@geosoft.no) - */ -public class Time extends Day { - protected final Log logger = LogFactory.getLog(getClass()); - - protected static final Log staticlogger = LogFactory.getLog(Time.class); - - /** - * Instantiate a Time object. The time is lenient meaning that illegal day - * parameters can be specified and results in a recomputed day with legal - * month/day values. - * - * @param year Year of this time - * @param month Month of this time - * @param dayOfMonth Day of month of this time. - * @param hourOfDay Hours of this time [0-23] - * @param minutes Minutes of this time [0-23] - * @param seconds Seconds of this time [0-23] - */ - public Time(int year, int month, int dayOfMonth, int hourOfDay, int minutes, - int seconds) { - super(year, month, dayOfMonth); - setHourOfDay(hourOfDay); - setMinutes(minutes); - setSeconds(seconds); - } - - /** - * Constructor - * @param day - * @param hourOfDay - * @param minutes - * @param seconds - */ - public Time(Day day, int hourOfDay, int minutes, int seconds) { - this(day.getYear(), day.getMonth(), day.getDayOfMonth(), hourOfDay, - minutes, seconds); - } - - - /** - * Constructor - * @param hourOfDay - * @param minutes - * @param seconds - */ - public Time(int hourOfDay, int minutes, int seconds) { - this(new Day(), hourOfDay, minutes, seconds); - } - - /** - * Constructor - */ - public Time() { - calendar_ = new GregorianCalendar(); // Now - } - - // end of constructors - - // Get Methods - - public Date getDay() { - return calendar_.getTime(); - } - - public int getHour() { - return calendar_.get(Calendar.HOUR); - } - - public int getHourOfDay() { - return calendar_.get(Calendar.HOUR_OF_DAY); - } - - public int getMinutes() { - return calendar_.get(Calendar.MINUTE); - } - - public int getSeconds() { - return calendar_.get(Calendar.SECOND); - } - - public int getMilliSeconds() { - return calendar_.get(Calendar.MILLISECOND); - } - - public int getAmPm() { - return calendar_.get(Calendar.AM_PM); - } - - // set Methods - - public void setDay(Day day) { - setYear(day.getYear()); - setMonth(day.getMonth()); - setDayOfMonth(day.getDayOfMonth()); - } - - public void setYear(int year) { - calendar_.set(Calendar.YEAR, year); - } - - public void setMonth(int month) { - calendar_.set(Calendar.MONTH, month); - } - - public void setDayOfMonth(int dayOfMonth) { - calendar_.set(Calendar.DAY_OF_MONTH, dayOfMonth); - } - - public void setHourOfDay(int hourOfDay) { - calendar_.set(Calendar.HOUR_OF_DAY, hourOfDay); - } - - public void setHour(int hour) { - calendar_.set(Calendar.HOUR, hour); - } - - public void setAmPm(int amPm) { - calendar_.set(Calendar.AM_PM, amPm); - } - - public void setMinutes(int minutes) { - calendar_.set(Calendar.MINUTE, minutes); - } - - public void setSeconds(int seconds) { - calendar_.set(Calendar.SECOND, seconds); - } - - public void setMilliSeconds(int milliSeconds) { - calendar_.set(Calendar.MILLISECOND, milliSeconds); - } - - // Time modification methods - - public void addHours(int nHours) { - calendar_.add(Calendar.HOUR_OF_DAY, nHours); - } - - public void addMinutes(int nMinutes) { - calendar_.add(Calendar.MINUTE, nMinutes); - } - - public void addSeconds(int nSeconds) { - calendar_.add(Calendar.SECOND, nSeconds); - } - - public void addMilliSeconds(int nMilliSeconds) { - calendar_.add(Calendar.MILLISECOND, nMilliSeconds); - } - - public void subtractHours(int nHours) { - addHours(-nHours); - } - - public void subtractMinutes(int nMinutes) { - addMinutes(-nMinutes); - } - - public void subtractSeconds(int nSeconds) { - addSeconds(-nSeconds); - } - - // Time test methods - - public boolean isAfter(Time time) { - return calendar_.after(time.calendar_); - } - - public boolean isBefore(Time time) { - return calendar_.before(time.calendar_); - } - - public boolean equals(Time time) { - return calendar_.equals(time.calendar_); - } - - // Time difference methods - - public long milliSecondsBetween(Time time) { - long millisBetween = calendar_.getTime().getTime() - - time.calendar_.getTime().getTime(); - return millisBetween; - } - - public double secondsBetween(Time time) { - long millisBetween = calendar_.getTime().getTime() - - time.calendar_.getTime().getTime(); - return millisBetween / 1000; - } - - public double minutesBetween(Time time) { - long millisBetween = calendar_.getTime().getTime() - - time.calendar_.getTime().getTime(); - return millisBetween / (1000 * 60); - } - - public double hoursBetween(Time time) { - long millisBetween = calendar_.getTime().getTime() - - time.calendar_.getTime().getTime(); - return millisBetween / (1000 * 60 * 60); - } - - // Display methods - - public String toString() { - StringBuffer string = new StringBuffer(); - - if (getHour() == 0) { - string.append("12"); // display "12" for midnight - } else { - string.append(getHour()); - } - string.append(':'); - if (getMinutes() < 10) - string.append('0'); - string.append(getMinutes()); - - if (getAmPm() == Calendar.AM) { - string.append(" AM"); - } else { - string.append(" PM"); - } - return string.toString(); - } - - // Misc. methods - - public static Time getTimeFromSqlTime(java.sql.Time sqlTime) { - // staticlogger.info("sqlTime "+ sqlTime.toString()); - long ms = sqlTime.getTime(); - java.util.Calendar gcal = GregorianCalendar.getInstance(); - gcal.setTime(new Date(ms)); - Time time = new Time(gcal.get(Calendar.HOUR_OF_DAY), gcal - .get(Calendar.MINUTE), gcal.get(Calendar.SECOND)); - return time; - } - - public static void main(String args[]) { - Time time = new Time(12, 00, 00); - System.out.println(time); - } -} diff --git a/src/edu/cornell/mannlib/semservices/util/ClassUtils.java b/src/edu/cornell/mannlib/semservices/util/ClassUtils.java deleted file mode 100644 index 1c1c5ca0..00000000 --- a/src/edu/cornell/mannlib/semservices/util/ClassUtils.java +++ /dev/null @@ -1,154 +0,0 @@ -/* $This file is distributed under the terms of the license in /doc/license.txt$ */ - -/* - * $Id$ - * CONFIDENTIAL AND PROPRIETARY. ? 2007 Revolution Health Group LLC. All rights reserved. - * This source code may not be disclosed to others, used or reproduced without the written permission of Revolution Health Group. - * - */ -package edu.cornell.mannlib.semservices.util; - -import java.lang.reflect.Constructor; -import java.lang.reflect.GenericArrayType; -import java.lang.reflect.Method; -import java.lang.reflect.ParameterizedType; -import java.lang.reflect.Proxy; -import java.lang.reflect.Type; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Map; - -import org.apache.log4j.Logger; - - -public class ClassUtils { - public static final String VERSION = "$Rev$"; - private static final Logger LOG = Logger.getLogger(ClassUtils.class); - - private ClassUtils() {} - - @SuppressWarnings("unchecked") - public static Method[] getMethods(Class clazz) { - if (Proxy.isProxyClass(clazz) && clazz.getInterfaces().length > 0 ) { - return clazz.getInterfaces()[0].getDeclaredMethods(); - } - - ArrayList methods = new ArrayList(); - Class interfaceClass = clazz; - // only change our classes - if ((interfaceClass.getPackage().getName().indexOf("java") != 0) && (interfaceClass != null)) { - if (!interfaceClass.isInterface()) { - Class[] interfaces = interfaceClass.getInterfaces(); - for (Class interfaceTemp : interfaces) { - if (interfaceTemp.isInterface()) { - methods.addAll(Arrays.asList(interfaceTemp.getMethods())); - } - } - } else { - methods.addAll(Arrays.asList(interfaceClass.getMethods())); - } - } - - if (methods.isEmpty()) { - methods.addAll(Arrays.asList(clazz.getDeclaredMethods())); - } - - return methods.toArray(new Method[methods.size()]); - } - - public static Object findEnumConstant(Class enumType, Object findConst) { - Object result = null; - Object[] enumConstants = enumType.getEnumConstants(); - for (Object enumConst : enumConstants) { - if (enumConst.toString().equals(findConst.toString())) { - result = enumConst; - break; - } - } - - if (result == null && findConst != null) { // last try for XmlEnum.. - result = getXmlEnumFromValue(enumType, findConst.toString()); - } - - return result; - } - - @SuppressWarnings("unchecked") - public static boolean isXmlEnum(Class class1) { - boolean result = false; - try { - Class xmlEnumClass = Class.forName("javax.xml.bind.annotation.XmlEnum"); - result = (xmlEnumClass != null) && (class1.getAnnotation(xmlEnumClass) != null); - } catch (ClassNotFoundException e) { - LOG.info("Class Not Found: javax.xml.bind.annotation.XmlEnum, this is ok if you aren't serializing JaxB Objects"); - } - - return result; - } - - - public static Object getXmlEnumFromValue(Class enumType, String findConst) { - Object result = null; - try { - if (isXmlEnum(enumType)) { - // XmlEnum will have a "fromValue" method to convert the const to the enum const - Method fromValue = enumType.getMethod("fromValue", String.class); - result = fromValue.invoke(enumType, findConst); - } - } catch (Exception e) { - // could happen..just give up and return null - } - return result; - } - - public static boolean isArrayType(Class type) { - return List.class.isAssignableFrom(type); - } - - public static boolean isMapType(Class type) { - return Map.class.isAssignableFrom(type); - } - - public static Class getArrayElementType(Method method, int paramIndex) { - Type[] types = method.getGenericParameterTypes(); - if (types.length > paramIndex) { - return getArrayElementType(types[paramIndex]); - } - return null; - } - - public static Class getArrayElementType(Type genericType) { - Class result = null; - - if (genericType instanceof ParameterizedType) { - ParameterizedType pt = (ParameterizedType) genericType; - //Type raw = pt.getRawType(); - //Type owner = pt.getOwnerType(); - Type[] typeArgs = pt.getActualTypeArguments(); - if (typeArgs[0] instanceof GenericArrayType) { - Class arrayElementType = (Class) ((GenericArrayType) typeArgs[0]) - .getGenericComponentType(); - result = arrayElementType; - } else if (typeArgs[0] instanceof Class){ - result = (Class) typeArgs[0]; - } - } - - return result; - } - - @SuppressWarnings("unchecked") - public static boolean hasEmptyConstructor(Class type) { - boolean result = false; - Constructor[] constructors = type.getDeclaredConstructors(); - for (Constructor constructor : constructors) { - if (constructor.getParameterTypes().length == 0) { - result = true; - break; - } - } - - return result; - } -} diff --git a/src/edu/cornell/mannlib/semservices/util/DateConverter.java b/src/edu/cornell/mannlib/semservices/util/DateConverter.java deleted file mode 100644 index 02ddc491..00000000 --- a/src/edu/cornell/mannlib/semservices/util/DateConverter.java +++ /dev/null @@ -1,143 +0,0 @@ -/* $This file is distributed under the terms of the license in /doc/license.txt$ */ - -/* - * $Id: DateConverter.java 50408 2007-03-28 19:14:46Z jdamick $ - * - * Copyright 2006- Revolution Health Group. All rights reserved. - * - * This software is the confidential and proprietary information - * of Revolution Health Group. (Confidential Information). - * You shall not disclose such Confidential Information and shall - * use it only in accordance with the terms of the license - * agreement you entered into with Revolution Health Group. - * - */ - -package edu.cornell.mannlib.semservices.util; - - -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.GregorianCalendar; - -import javax.xml.datatype.DatatypeConfigurationException; -import javax.xml.datatype.DatatypeFactory; -import javax.xml.datatype.XMLGregorianCalendar; - -import org.apache.commons.beanutils.ConversionException; -import org.apache.commons.beanutils.Converter; -import org.apache.log4j.Logger; -import net.sf.json.JSONException; -import net.sf.json.JSONObject; - -public final class DateConverter implements Converter { - private static final Logger LOG = Logger.getLogger(DateConverter.class); - - // Constructors - - /** - * Create a {@link Converter} that will throw a {@link ConversionException} - * if a conversion error occurs. - */ - public DateConverter() { - this.defaultValue = null; - converter = new XMLGregorianCalendarConverter(defaultValue); - } - - /** - * Create a {@link Converter} that will return the specified default value - * if a conversion error occurs. - * - * @param defaultValue - * The default value to be returned - */ - public DateConverter(Object defaultValue) { - this.defaultValue = defaultValue; - converter = new XMLGregorianCalendarConverter(defaultValue); - } - - // Instance Variables - - /** - * The default value specified to our Constructor, if any. - */ - private Object defaultValue = null; - private XMLGregorianCalendarConverter converter = null; - - // --------------------------------------------------------- Public Methods - - /** - * Convert the specified input object into an output object of the specified - * type. - * - * @param type - * XMLGregorianCalendar type to which this value should be - * converted - * @param value - * The input value to be converted - * - * @exception ConversionException - * if conversion cannot be performed successfully - */ - @SuppressWarnings({ "unchecked", "deprecation" }) - public Object convert(Class type, Object value) { - - String dateValue = value.toString(); - - if (value instanceof Date) { - return (value); - } else { - try { - JSONObject jsonObj = JSONObject.fromObject(value.toString()); - dateValue = jsonObj - .optString("Date" /* Date.class.toString() */); - } catch (JSONException e) { /* empty, could fail.. */ - LOG.debug("no date object found in the json"); - } - } - XMLGregorianCalendar calendar = (XMLGregorianCalendar) converter - .convert(type, dateValue); - - Object result = null; - try { - result = calendar.toGregorianCalendar().getTime(); - } catch (Exception exception) { /* - * empty, had some error parsing the - * time - */ - LOG.debug("Error converting the time"); - if (result == null) { - try { - result = new Date(Date.parse(dateValue)); - } catch (IllegalArgumentException argException) { - // last chance - result = java.sql.Date.valueOf(dateValue); - } - } - } - - if (result != null && (result instanceof Date) - && type.equals(java.sql.Date.class)) { - result = new java.sql.Date(((Date) result).getTime()); - } - - return result; - } - - public static XMLGregorianCalendar toXMLGregorianCalendar(Date date) { - try { - GregorianCalendar calendar = new GregorianCalendar(); - calendar.setTime(date); - return DatatypeFactory.newInstance().newXMLGregorianCalendar( - calendar); - } catch (DatatypeConfigurationException e) { - return null; - } - } - - public static String toFormattedString(Date date) { - String s = new String(); - s = new SimpleDateFormat("MMM d, h:mm a").format(date.getTime()); - return s; - } -} diff --git a/src/edu/cornell/mannlib/semservices/util/DateUtils.java b/src/edu/cornell/mannlib/semservices/util/DateUtils.java deleted file mode 100644 index 7e18b736..00000000 --- a/src/edu/cornell/mannlib/semservices/util/DateUtils.java +++ /dev/null @@ -1,197 +0,0 @@ -/* $This file is distributed under the terms of the license in /doc/license.txt$ */ - -package edu.cornell.mannlib.semservices.util; - -import java.text.ParsePosition; -import java.text.SimpleDateFormat; -import java.util.Calendar; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -public class DateUtils { - /** Logger for this class and subclasses */ - protected final Log logger = LogFactory.getLog(getClass()); - - public static final Long MILLISECONDSINDAY = 86400L; - public static final Long MILLISECONDSINYEAR = MILLISECONDSINDAY * 365; - - public static String getToday(String fmt) { - String today; - Calendar now = Calendar.getInstance(); - SimpleDateFormat formatter = new SimpleDateFormat("yyyy-dd-MM"); - today = formatter.format(now.getTime()); - return today; - } - - public static String getCurrentYear() { - String y; - Calendar now = Calendar.getInstance(); - SimpleDateFormat formatter = new SimpleDateFormat("yyyy"); - y = formatter.format(now.getTime()); - return y; - } - - - /** - * Get Current Jave Date - * - * returns a date in following format: Tue Apr 01 08:21:57 EST 2003 - */ - public static java.util.Date getCurrentJavaDate() { - java.util.Date currentDate = new java.util.Date(); - return currentDate; - } - - /** - * get Current SQL date - * - * returns a date in following format: 2003-04-01 - */ - public static java.sql.Date getCurrentSQLDate() { - java.util.Date currentDate = new java.util.Date(); - java.sql.Date sqlDate = new java.sql.Date(currentDate.getTime()); - return sqlDate; - } - - /** - * get current SQL Timestamp - * - * returns a date in following format: 2003-04-01 08:21:57.556 - */ - public static java.sql.Timestamp getCurrentSQLTimestamp() { - java.sql.Timestamp sqlTime = new java.sql.Timestamp(System.currentTimeMillis()); - return sqlTime; - } - - /** - * returns a formatted date/time as a string - * - * returns a date in the following format 01-04-03 08:21:57 - */ - public static String getFormattedDate() { - String s = null; - Calendar today = Calendar.getInstance(); - s = new SimpleDateFormat("dd-MM-yy hh:mm:ss").format(today.getTime()); - return s; - } - - /** - * returns a formatted date/time as a string - * @param a format string - * @return the current date in the specified format - */ - public static String getFormattedDate(String f) { - String s = null; - Calendar today = Calendar.getInstance(); - s = new SimpleDateFormat(f).format(today.getTime()); - return s; - } - - /** - * given a String date in a described format (i.e. YYYY-mm-dd) convert - * it to a String date in a new format (i.e. MM-dd-YYYY) - * - * @param s input date string - * @param formatin a format string - * @param formatout a format string - * @return formated date string - */ - public static String convertStringDate(String s, String formatIn, String formatOut) { - - try { - if (s.equals("now")) { - return (new SimpleDateFormat(formatOut).format(new java.util.Date())); - } else { - return (new SimpleDateFormat(formatOut)).format( - (new SimpleDateFormat(formatIn)).parse( - s, new ParsePosition(0))); - } - } catch( Exception e ) { - return ""; - } - - } - - /** - * returns a Date given a formatted string - */ - public static java.util.Date setDate(String s) { - SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yy hh:mm:ss"); - ParsePosition pos = new ParsePosition(0); - java.util.Date newDate = formatter.parse(s, pos); - return newDate; - } - - /** - * returns a Date given a formatted string - */ - public static java.util.Date setDate(String s, String fmt) { - SimpleDateFormat formatter = new SimpleDateFormat(fmt); - ParsePosition pos = new ParsePosition(0); - java.util.Date newDate = formatter.parse(s, pos); - return newDate; - } - - /** - * returns a SQL Date given a formatted string - */ - public static java.sql.Date getSQLDateFromString(String s) { - return java.sql.Date.valueOf(s); - } - - /** - * returns a SQL Time given a formatted string - */ - public static java.sql.Time getSQLTimeFromString(String s) { - return java.sql.Time.valueOf(s); - } - - /* - * return a formatted version of a java.sqlDate - */ - public static String getFormattedDate(java.util.Date date, String fmt) { - String formattedDate = new String(); - formattedDate = new SimpleDateFormat(fmt).format(new java.util.Date(date.getTime())); - return formattedDate; - } - - /* - * return a formatted version of a java.sqlDate - */ - public static String getFormattedSQLDate(java.sql.Date sqldate, String fmt) { - String formattedDate = new String(); - formattedDate = new SimpleDateFormat(fmt).format(new java.util.Date(sqldate.getTime())); - return formattedDate; - } - - - public static java.sql.Date getNextSQLDate(java.sql.Date currentDate) { - Calendar cal = Calendar.getInstance(); - cal.setTime(currentDate); - cal.add(Calendar.DATE, 1); - java.util.Date tomorrow = cal.getTime(); - return new java.sql.Date(tomorrow.getTime()); - } - - /** - * @param start - * @param end - * @return elapsed time - */ - public static String getElapsedTime(String start, String end) { - long startlong = Long.parseLong(start, 10); - long endlong = Long.parseLong(end, 10); - long elapsed = endlong - startlong; - return Long.toString(elapsed, 10); - } - - /** - * returns a SQL Timestamp given a formatted string - */ - public static java.sql.Timestamp convertSQLTimestamp(String s, String formatIn, String formatOut) { - String s2 = convertStringDate(s, formatIn, formatOut); - //System.out.println("s2: "+s2); - return java.sql.Timestamp.valueOf(s2+".0"); - } - -} diff --git a/src/edu/cornell/mannlib/semservices/util/DayConverter.java b/src/edu/cornell/mannlib/semservices/util/DayConverter.java deleted file mode 100644 index f21edefa..00000000 --- a/src/edu/cornell/mannlib/semservices/util/DayConverter.java +++ /dev/null @@ -1,80 +0,0 @@ -/* $This file is distributed under the terms of the license in /doc/license.txt$ */ - -package edu.cornell.mannlib.semservices.util; - - - -import java.util.Date; -import org.apache.commons.beanutils.Converter; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import edu.cornell.mannlib.semservices.bo.Day; - -public class DayConverter implements Converter { - @SuppressWarnings("unused") - private static final Log logger = LogFactory.getLog(DayConverter.class); - /** - * The default value specified to our Constructor, if any. - */ - @SuppressWarnings("unused") - private Object defaultValue = null; - - /** - * Should we return the default value on conversion errors? - */ - @SuppressWarnings("unused") - private boolean useDefault = true; - - - /** - * Constructor - */ - public DayConverter() { - this.defaultValue = null; - this.useDefault = false; - } - - /** - * Constructor with object - * @param defaultValue - */ - public DayConverter(Object defaultValue) { - this.defaultValue = defaultValue; - this.useDefault = true; - } - - /* (non-Javadoc) - * @see org.apache.commons.beanutils.Converter#convert(java.lang.Class, java.lang.Object) - */ - @SuppressWarnings("unchecked") - public Object convert(Class type, Object value) { - String s = value.toString(); - return s; - } - - /** - * Format the output to something reasonable - * @param day - * @return - */ - public static String toFormattedString(Object day) { - Day dayObject = (Day) day; - String s = dayObject.getDayName()+ - ", "+dayObject.getMonthName()+ - " "+dayObject.getDayOfMonth()+ - ", "+dayObject.getYear(); - return s; - } - - public static String toUnixTime(Object day) { - // get date in milliseconds and divide by zero to return unixtime - Day dayObject = (Day) day; - Date date = dayObject.getDate(); - Long seconds = date.getTime() / 1000; - //logger.info("unixtime: " + seconds.toString()); - return seconds.toString(); - } - - -} diff --git a/src/edu/cornell/mannlib/semservices/util/ObjectUtils.java b/src/edu/cornell/mannlib/semservices/util/ObjectUtils.java deleted file mode 100644 index c146ede7..00000000 --- a/src/edu/cornell/mannlib/semservices/util/ObjectUtils.java +++ /dev/null @@ -1,276 +0,0 @@ -/* $This file is distributed under the terms of the license in /doc/license.txt$ */ - -/* - - * $Id$ - * CONFIDENTIAL AND PROPRIETARY. © 2007 Revolution Health Group LLC. All rights reserved. - * This source code may not be disclosed to others, used or reproduced without the written permission of Revolution Health Group. - * - */ -package edu.cornell.mannlib.semservices.util; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.math.BigDecimal; -import java.math.BigInteger; -import java.util.Collection; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -public class ObjectUtils { - public static final String VERSION = "$Rev: 63219 $"; - private static final Log logger = LogFactory.getLog(ObjectUtils.class); - - @SuppressWarnings("unchecked") - private static final Set SIMPLE_TYPES = new HashSet() { - /** - * - */ - private static final long serialVersionUID = 1L; - - { - add(Boolean.class); - add(boolean.class); - add(Float.class); - add(float.class); - add(Double.class); - add(double.class); - add(Integer.class); - add(int.class); - add(Long.class); - add(long.class); - add(Short.class); - add(short.class); - add(Byte.class); - add(byte.class); - add(String.class); - add(BigDecimal.class); - add(BigInteger.class); - } - }; - - /** - * - */ - private ObjectUtils() { - } - - /** - * @param obj - * @return - */ - @SuppressWarnings("unchecked") - public static boolean isMap(Object obj) { - if (obj instanceof Map) { - return true; - } - return false; - } - - - /** - * @param obj - * @return - */ - public static boolean isBigDecimal(Object obj) { - if (obj instanceof BigDecimal) { - return true; - } - return false; - } - - /** - * @param obj - * @return - */ - public static boolean isArray(Object obj) { - if (obj != null) { - return isClassArray(obj.getClass()); - } - return false; - } - - /** - * @param clazz - * @return - */ - @SuppressWarnings("unchecked") - public static boolean isClassArray(Class clazz) { - if (clazz.isArray()) { - return true; - } - if (Collection.class.isAssignableFrom(clazz)) { - return true; - } - return false; - } - - /** - * @param obj - * @return - */ - public static boolean isSimpleType(Object obj) { - boolean result = false; - if (obj != null) { - result = isClassSimpleType(obj.getClass()); - } - - return result; - } - - /** - * @param clazz - * @return - */ - @SuppressWarnings("unchecked") - public static boolean isClassSimpleType(Class clazz) { - boolean result = false; - if (clazz != null && SIMPLE_TYPES.contains(clazz)) { - result = true; - } - return result; - } - - /** - * @param value - * @return - */ - @SuppressWarnings("unchecked") - public static boolean isComplex(Object value) { - Class type = value.getClass(); - return !(isSimpleType(value) || type.isEnum()); - } - - /** - * @param enumObj - * @return - */ - @SuppressWarnings("unchecked") - public static String getXmlEnumValue(Object enumObj) { - String result = null; - try { - if (ClassUtils.isXmlEnum((Class) enumObj.getClass())) { - // XmlEnum will have a "fromValue" method to convert the const - // to the enum const - Method value = enumObj.getClass().getMethod("value"); - result = value.invoke(enumObj).toString(); - } - } catch (Exception e) { - // could happen..just give up and return null - } - return result; - } - - /** - * @param o - */ - public static void printBusinessObject(Object o) { - Field[] fields = o.getClass().getDeclaredFields(); - - for (int i = 0; i < fields.length; i++) { - Field field = fields[i]; - try { - field.setAccessible(true); - System.out.println(field.getName()+": "+field.get(o)); - } - catch (IllegalAccessException e) { - System.err.println("Illegal access exception"); - } catch (NullPointerException e) { - System.err.println("Nullpointer Exception"); - } - } - System.out.println(); - } - - /** - * @param o - * @param fieldnames - */ - public static void printBusinessObject(Object o, List fieldnames) { - Field[] fields = new Field[fieldnames.size()]; - int f = 0; - for (String s: fieldnames) { - try { - fields[f++] = o.getClass().getDeclaredField(s); - } catch (SecurityException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (NoSuchFieldException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - for (int i = 0; i < fields.length; i++) { - Field field = fields[i]; - try { - field.setAccessible(true); - System.out.println(field.getName()+": "+field.get(o)); - } - catch (IllegalAccessException e) { - System.err.println("Illegal access exception"); - } catch (NullPointerException e) { - System.err.println("Nullpointer Exception"); - } - } - System.out.println(); - } - - /** - * @param o - */ - public static void logBusinessObject(Object o) { - Field[] fields = o.getClass().getDeclaredFields(); - - for (int i = 0; i < fields.length; i++) { - Field field = fields[i]; - try { - field.setAccessible(true); - logger.info(field.getName()+": "+field.get(o)); - } - catch (IllegalAccessException e) { - logger.error("Illegal access exception"); - } catch (NullPointerException e) { - logger.error("Nullpointer Exception"); - } - - } - } - - /** - * @param mapobject - */ - public static void printMapObject(Map mapobject) { - Iterator iter = mapobject.keySet().iterator(); - while (iter.hasNext()) { - Object keyobj = iter.next(); - Object valobj = mapobject.get(keyobj); - System.out.println(keyobj +": "+ valobj); - } - } - - /** - * @param mapobject - */ - public static void logMapObject(Map mapobject) { - Iterator iter = mapobject.keySet().iterator(); - while (iter.hasNext()) { - Object keyobj = iter.next(); - Object valobj = mapobject.get(keyobj); - logger.info(keyobj +": "+ valobj); - } - } - - public static String nl2br(String text) { - return text.replaceAll("\n\n", "

").replaceAll("\n", "
"); - } - - - -} diff --git a/src/edu/cornell/mannlib/semservices/util/TimeConverter.java b/src/edu/cornell/mannlib/semservices/util/TimeConverter.java deleted file mode 100644 index ccd6147c..00000000 --- a/src/edu/cornell/mannlib/semservices/util/TimeConverter.java +++ /dev/null @@ -1,74 +0,0 @@ -/* $This file is distributed under the terms of the license in /doc/license.txt$ */ - -package edu.cornell.mannlib.semservices.util; -import edu.cornell.mannlib.semservices.bo.Time; -import java.util.Date; - -import org.apache.commons.beanutils.Converter; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - - - -public class TimeConverter implements Converter { - @SuppressWarnings("unused") - private static final Log logger = LogFactory.getLog(TimeConverter.class); - - /** - * The default value specified to our Constructor, if any. - */ - @SuppressWarnings("unused") - private Object defaultValue = null; - - /** - * Should we return the default value on conversion errors? - */ - @SuppressWarnings("unused") - private boolean useDefault = true; - - /** - * - */ - public TimeConverter() { - this.defaultValue = null; - this.useDefault = false; - } - - /** - * @param defaultValue - */ - public TimeConverter(Object defaultValue) { - this.defaultValue = defaultValue; - this.useDefault = true; - } - - /* (non-Javadoc) - * @see org.apache.commons.beanutils.Converter#convert(java.lang.Class, java.lang.Object) - */ - @SuppressWarnings("unchecked") - public Object convert(Class type, Object value) { - String s = value.toString(); - return s; - } - - /** - * @param time - * @return - */ - public static String toFormattedString(Object time) { - return time.toString(); - } - - /** - * @param time - * @return - */ - public static String toUnixTime(Object time) { - Time timeObject = (Time) time; - Date date = timeObject.getDate(); - Long seconds = date.getTime() / 1000; - //logger.info("unixtime: " + seconds.toString()); - return seconds.toString(); - } - -} diff --git a/src/edu/cornell/mannlib/semservices/util/TimestampConverter.java b/src/edu/cornell/mannlib/semservices/util/TimestampConverter.java deleted file mode 100644 index c4f3baa8..00000000 --- a/src/edu/cornell/mannlib/semservices/util/TimestampConverter.java +++ /dev/null @@ -1,65 +0,0 @@ -/* $This file is distributed under the terms of the license in /doc/license.txt$ */ - -package edu.cornell.mannlib.semservices.util; -import java.sql.Timestamp; -import java.text.SimpleDateFormat; -import java.util.Date; - -import org.apache.commons.beanutils.Converter; - -public class TimestampConverter implements Converter { - /** - * The default value specified to our Constructor, if any. - */ - @SuppressWarnings("unused") - private Object defaultValue = null; - - /** - * Should we return the default value on conversion errors? - */ - @SuppressWarnings("unused") - private boolean useDefault = true; - - - /** - * - */ - public TimestampConverter() { - this.defaultValue = null; - this.useDefault = false; - } - - /** - * @param defaultValue - */ - public TimestampConverter(Object defaultValue) { - this.defaultValue = defaultValue; - this.useDefault = true; - } - - /* (non-Javadoc) - * @see org.apache.commons.beanutils.Converter#convert(java.lang.Class, java.lang.Object) - */ - - @SuppressWarnings("unchecked") - public Object convert(Class type, Object value) { - Timestamp ts = (Timestamp) value; - String s = new String(); - s = new SimpleDateFormat("MMM d, h:mm a").format(ts.getTime()); - return s; - } - - /** - * @param time - * @return - */ - public String toUnixTime(Object time) { - Timestamp ts = (Timestamp) time; - Date date = new Date(ts.getTime()); - Long seconds = date.getTime() / 1000; - //logger.info("unixtime: " + seconds.toString()); - return seconds.toString(); - } - - -} diff --git a/src/edu/cornell/mannlib/semservices/util/XMLGregorianCalendarConverter.java b/src/edu/cornell/mannlib/semservices/util/XMLGregorianCalendarConverter.java deleted file mode 100644 index 2caaf4ce..00000000 --- a/src/edu/cornell/mannlib/semservices/util/XMLGregorianCalendarConverter.java +++ /dev/null @@ -1,103 +0,0 @@ -/* $This file is distributed under the terms of the license in /doc/license.txt$ */ - -/* - - * $Id: XMLGregorianCalendarConverter.java 28642 2006-10-25 13:41:54Z jdamick $ - * - * Copyright 2006- Revolution Health Group. All rights reserved. - * - * This software is the confidential and proprietary information - * of Revolution Health Group. (Confidential Information). - * You shall not disclose such Confidential Information and shall - * use it only in accordance with the terms of the license - * agreement you entered into with Revolution Health Group. - * - */ - -package edu.cornell.mannlib.semservices.util; - -import javax.xml.datatype.DatatypeFactory; -import javax.xml.datatype.XMLGregorianCalendar; - -import org.apache.commons.beanutils.ConversionException; -import org.apache.commons.beanutils.Converter; - -public final class XMLGregorianCalendarConverter implements Converter { - - // Constructors - - /** - * Create a {@link Converter} that will throw a {@link ConversionException} - * if a conversion error occurs. - */ - public XMLGregorianCalendarConverter() { - this.defaultValue = null; - this.useDefault = false; - } - - /** - * Create a {@link Converter} that will return the specified default value if - * a conversion error occurs. - * - * @param defaultValue - * The default value to be returned - */ - public XMLGregorianCalendarConverter(Object defaultValue) { - this.defaultValue = defaultValue; - this.useDefault = true; - } - - // Instance Variables - - /** - * The default value specified to our Constructor, if any. - */ - private Object defaultValue = null; - - /** - * Should we return the default value on conversion errors? - */ - private boolean useDefault = true; - - // Public Methods - - /** - * Convert the specified input object into an output object of the specified - * type. - * - * @param type - * XMLGregorianCalendar type to which this value should be - * converted - * @param value - * The input value to be converted - * - * @exception ConversionException - * if conversion cannot be performed successfully - */ - @SuppressWarnings("unchecked") - public Object convert(Class type, Object value) { - - if (value == null) { - if (useDefault) { - return (defaultValue); - } else { - throw new ConversionException("No value specified"); - } - } - - if (value instanceof XMLGregorianCalendar) { - return (value); - } - - try { - return DatatypeFactory.newInstance().newXMLGregorianCalendar( - value.toString()); - } catch (Exception e) { - if (useDefault) { - return (defaultValue); - } else { - throw new ConversionException(e); - } - } - } -} diff --git a/src/edu/cornell/mannlib/semservices/view/BeanToJsonSerializer.java b/src/edu/cornell/mannlib/semservices/view/BeanToJsonSerializer.java deleted file mode 100644 index 13d4d859..00000000 --- a/src/edu/cornell/mannlib/semservices/view/BeanToJsonSerializer.java +++ /dev/null @@ -1,228 +0,0 @@ -/* $This file is distributed under the terms of the license in /doc/license.txt$ */ - -/* - * $Id: BeanToJsonSerializer.java 66350 2007-08-20 21:11:41Z xluan $ - * - * Copyright 2006- Revolution Health Group. All rights reserved. - * - * This software is the confidential and proprietary information - * of Revolution Health Group. (Confidential Information). - * You shall not disclose such Confidential Information and shall - * use it only in accordance with the terms of the license - * agreement you entered into with Revolution Health Group. - * - */ -package edu.cornell.mannlib.semservices.view; - -import java.beans.PropertyDescriptor; -import java.lang.reflect.InvocationTargetException; -import java.util.Arrays; -import java.util.Collection; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; - -import javax.xml.datatype.XMLGregorianCalendar; - -import org.apache.commons.beanutils.ConvertUtils; -import org.apache.commons.beanutils.PropertyUtils; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import net.sf.json.JSONArray; -import net.sf.json.JSONException; -import net.sf.json.JSONNull; -import net.sf.json.JSONObject; - -import edu.cornell.mannlib.semservices.bo.Day; -import edu.cornell.mannlib.semservices.bo.Time; -import edu.cornell.mannlib.semservices.util.ClassUtils; -import edu.cornell.mannlib.semservices.util.DateConverter; -import edu.cornell.mannlib.semservices.util.DayConverter; -import edu.cornell.mannlib.semservices.util.ObjectUtils; -import edu.cornell.mannlib.semservices.util.TimeConverter; -import edu.cornell.mannlib.semservices.util.TimestampConverter; - -@SuppressWarnings("serial") -public class BeanToJsonSerializer { - private static final Log logger = LogFactory.getLog(BeanToJsonSerializer.class); - - /** - * - */ - private BeanToJsonSerializer() { - ConvertUtils.register(new DateConverter(), java.util.Date.class); - ConvertUtils.register(new TimestampConverter(), - String.class); - ConvertUtils.register(new TimeConverter(), String.class); - ConvertUtils.register(new DayConverter(), String.class); - } - - /** - * - */ - @SuppressWarnings("unchecked") - private static final Set CONVERTABLE_CLASSES = new HashSet() { - { - add(XMLGregorianCalendar.class); - } - }; - - /** - * @param bean - * @return - */ - public static JSONObject serializeToJsonObject(Object bean) { - Object result = serialize(bean); - JSONObject jsonObj = new JSONObject(); - try { - if (ObjectUtils.isArray(bean) || result instanceof JSONArray) { - jsonObj.put("array", result); - } else if (result instanceof JSONObject) { - jsonObj = (JSONObject) result; - } else { - jsonObj.put(bean.getClass().getSimpleName(), result); - } - } catch (JSONException e) { - logger.error("JSONException ",e); - } - return jsonObj; - } - - /** - * @param bean - * @return - */ - @SuppressWarnings("unchecked") - public static Object serialize(Object bean) { - //String simpleName = bean.getClass().getSimpleName(); - Object result = JSONNull.getInstance(); - - if (isObjectJson(bean)) { - result = bean; - } else if (bean != null && isConvertable(bean.getClass())) { - //logger.info("Converting convertable Class: "+simpleName); - result = ConvertUtils.convert(bean); - } else if (bean != null && Time.class.isAssignableFrom(bean.getClass())) { - //logger.info("Converting Time Class: "+simpleName); - result = TimeConverter.toUnixTime((Time) bean); - } else if (bean != null && Day.class.isAssignableFrom(bean.getClass())) { - //logger.info("Converting Day Class: "+simpleName); - result = DayConverter.toUnixTime((Day) bean); - } else if (bean != null - && java.util.Date.class.isAssignableFrom(bean.getClass())) { - // for date consistency, use the XMLGregorianCalendar - // result = - // DateConverter.toXMLGregorianCalendar((java.util.Date)bean - // ).toString(); - //logger.info("Converting Date Class: "+simpleName); - result = DateConverter.toFormattedString((java.util.Date) bean); - } else if (bean != null && ObjectUtils.isComplex(bean) - && !ObjectUtils.isArray(bean) && !ObjectUtils.isMap(bean)) { - //logger.info("Converting complex bean: "+simpleName); - JSONObject jsonObject = new JSONObject(); - try { - PropertyDescriptor[] pds = PropertyUtils - .getPropertyDescriptors(bean); - for (int i = 0; i < pds.length; i++) { - String key = pds[i].getName(); - if ("class".equals(key)) { - continue; - } - - Class type = pds[i].getPropertyType(); - Object value = PropertyUtils.getProperty(bean, key); - - if (String.class.isAssignableFrom(type)) { - jsonObject.put(key, (value == null) ? "" : value); - } else if (ObjectUtils.isArray(value)) { - jsonObject.put(key, serialize(value)); - } else if (value == null) { - jsonObject.put(key, JSONNull.getInstance()); - } else if (ObjectUtils.isSimpleType(value) || type.isEnum()) { - if (ClassUtils.isXmlEnum(type)) { - jsonObject.put(key, ObjectUtils.getXmlEnumValue(value)); - } else { - jsonObject.put(key, value); - } - } else { - jsonObject.put(key, serialize(value)); - } - } - - result = jsonObject; - } catch (IllegalAccessException e) { - logger.error("IllegalAccessException ", e); - } catch (InvocationTargetException e) { - logger.error("InvocationTargetException ", e); - } catch (NoSuchMethodException e) { - logger.error("NoSuchMethodException ", e); - } catch (JSONException e) { - logger.error("JSONException ", e); - } - } else if (ObjectUtils.isArray(bean)) { - //logger.info("Converting Array bean: "+simpleName); - Collection collection = null; - if (bean.getClass().isArray()) { - collection = Arrays.asList((Object[]) bean); - } else { - collection = (Collection) bean; - } - - result = new JSONArray(); - for (Object item : collection) { - ((JSONArray) result).add(serialize(item)); - } - } else if (ObjectUtils.isMap(bean)) { - //logger.info("Converting Map bean: "+simpleName); - Map map = (Map) bean; - result = new JSONObject(); - for (Object key : map.keySet()) { - try { - ((JSONObject) result).put(key.toString(), - serialize(map.get(key))); - } catch (JSONException e) { - logger.error("JSONException ",e); - } - } - } else if (bean != null && ClassUtils.isXmlEnum(bean.getClass())) { - //logger.info("converting xmlEnum bean: "+simpleName); - result = ObjectUtils.getXmlEnumValue(bean); - } else { - //logger.info("just returning the bean: "+simpleName); - result = bean; - } - return result; - } - - /** - * @param clazz - * @return - */ - @SuppressWarnings("unchecked") - private static boolean isConvertable(Class clazz) { - boolean found = false; - for (Class convertableClass : CONVERTABLE_CLASSES) { - if (convertableClass.isAssignableFrom(clazz)) { - found = true; - break; - } else { - //logger.warn("Class is not convertable"); - //logger.warn("Class: " + clazz.getSimpleName()); - } - } - return found; - } - - /** - * @param bean - * @return - */ - private static boolean isObjectJson(Object bean) { - if ((JSONNull.getInstance().equals(bean)) || (bean instanceof JSONObject) - || (bean instanceof JSONArray)) { - return true; - } - return false; - } -} diff --git a/src/edu/cornell/mannlib/vitro/webapp/servlet/ConceptSearchServlet.java b/src/edu/cornell/mannlib/vitro/webapp/servlet/ConceptSearchServlet.java index 04a0aca0..38bdf751 100644 --- a/src/edu/cornell/mannlib/vitro/webapp/servlet/ConceptSearchServlet.java +++ b/src/edu/cornell/mannlib/vitro/webapp/servlet/ConceptSearchServlet.java @@ -11,16 +11,16 @@ import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import net.sf.json.JSONObject; - import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; + import edu.cornell.mannlib.semservices.bo.Concept; import edu.cornell.mannlib.semservices.bo.ConceptInfo; import edu.cornell.mannlib.semservices.bo.SemanticServicesError; -import edu.cornell.mannlib.semservices.view.BeanToJsonSerializer; import edu.cornell.mannlib.vitro.webapp.controller.VitroHttpServlet; import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; import edu.cornell.mannlib.vitro.webapp.utils.ConceptSearchService.ConceptSearchServiceUtils; @@ -58,7 +58,9 @@ public class ConceptSearchServlet extends VitroHttpServlet { conceptInfo.setSemanticServicesError(semanticServicesError); } conceptInfo.setConceptList(results); + String json = renderJson(conceptInfo); + json = StringUtils.replaceChars(json, "\r\t\n", ""); PrintWriter writer = resp.getWriter(); resp.setContentType("application/json"); @@ -70,12 +72,18 @@ public class ConceptSearchServlet extends VitroHttpServlet { } } + protected String renderJson(ConceptInfo conceptInfo) { + + ObjectMapper mapper = new ObjectMapper(); + try { + return mapper.writeValueAsString(conceptInfo); + } catch (JsonProcessingException e) { + // TODO Auto-generated catch block + log.error("An error occurred in rendering conceptInfo as json ", e); + return null; + } + } - JSONObject jsonObject = null; - jsonObject = BeanToJsonSerializer.serializeToJsonObject(conceptInfo); - log.debug(jsonObject.toString()); - return jsonObject.toString(); - } }