package feedthistothat.DataTypes; import java.util.Calendar; import java.util.Date; import java.util.TimeZone; import javax.persistence.Id; import javax.servlet.http.HttpServletRequest; import com.googlecode.objectify.annotation.Cached; import com.googlecode.objectify.annotation.Indexed; import com.googlecode.objectify.annotation.Unindexed; import feedthistothat.Readers.ReaderFactory.Reader; import feedthistothat.Writers.IWriter; import feedthistothat.Writers.WriterFactory; import feedthistothat.Writers.WriterFactory.Writer; @Cached @Unindexed public class FeedParameters { @Id @Indexed private Long id; private String sourceUserName = ""; private Reader source = Reader.Test; @Indexed private Date postingTime; private TimeZone timeZone = TimeZone.getTimeZone("Europe/London"); private String destinationUserName = ""; private String destinationPassword = ""; private String url = ""; private Writer destination = Writer.Test; @Indexed private String emailAddress = ""; private boolean postPrivately = true; private Date lastUpdated; private boolean postWithTags = false; @SuppressWarnings("unused") @Indexed private boolean inPostingQueue = false; private boolean forcePostInPast = false; private int daysToInclude = 1; private boolean repeats = false; private String results; private String postTemplate; private String subjectTemplate; private String defaultTags; @SuppressWarnings("deprecation") public FeedParameters() { postingTime = new Date(); postingTime.setHours(11); postTemplate = DataAccessObject.getDefaultPostTemplate(); subjectTemplate =DataAccessObject.getDefaultSubjectTemplate(); defaultTags = DataAccessObject.getDefaultTags(); } public FeedParameters(HttpServletRequest req) throws Exception{ sourceUserName = req.getParameter("SourceUserName"); source = Reader.valueOf(req.getParameter("Source")); postingTime = getPostingTime(req); timeZone = TimeZone.getTimeZone(req.getParameter("TimeZone")); Calendar yesterday = Calendar.getInstance(); daysToInclude = Integer.parseInt(req.getParameter("DaysToInclude")); yesterday.setTime(postingTime); yesterday.add(Calendar.DATE, -daysToInclude); lastUpdated = yesterday.getTime(); destinationUserName = req.getParameter("DestinationUserName"); destination = Writer.valueOf(req.getParameter("OutputTo")); IWriter writer = WriterFactory.GetWriter(null, null, null, null, null, destination); destinationPassword = writer.EncryptPassword(req.getParameter("DestinationPassword")); postTemplate = req.getParameter("PostTemplate"); subjectTemplate = req.getParameter("SubjectTemplate"); defaultTags = req.getParameter("DefaultTags"); postPrivately = req.getParameter("PostPrivately") != null; postWithTags = req.getParameter("PostWithTags") != null; forcePostInPast = req.getParameter("ForcePostInPast") != null; repeats = req.getParameter("Repeats") != null; url = req.getParameter("URL"); setInPostingQueue(); } private void setInPostingQueue() { inPostingQueue = lastUpdated.before(postingTime); } private Date getPostingTime(HttpServletRequest req) { TimeZone timeZone = TimeZone.getTimeZone("UTC"); Calendar postingTime = Calendar.getInstance(timeZone); int timeOfDay = Integer.parseInt(req.getParameter("TimeOfDay")); int day = Integer.parseInt(req.getParameter("Day")); int month = Integer.parseInt(req.getParameter("Month"))-1; int year = Integer.parseInt(req.getParameter("Year")); postingTime.set(Calendar.HOUR_OF_DAY, timeOfDay); postingTime.set(Calendar.MINUTE, 0); postingTime.set(Calendar.SECOND,0); postingTime.set(Calendar.MILLISECOND,0); postingTime.set(Calendar.DATE, day); postingTime.set(Calendar.MONTH, month); postingTime.set(Calendar.YEAR, year); return postingTime.getTime(); } public String getSourceUserName() { return sourceUserName; } public Reader getSource() { return source; } public void setPostingTime(Date postingTime) { this.postingTime = postingTime; setInPostingQueue(); } public Calendar getPostingTime() { Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("UTC")); calendar.setTime(postingTime); return calendar; } public int getPostingHour(){ return getPostingTime().get(Calendar.HOUR_OF_DAY); } public TimeZone getTimeZone() { return timeZone; } public String getDestinationUserName() { return destinationUserName; } public String getDestinationPassword() { return destinationPassword; } public Writer getDestination() { return destination; } public String getEmailAddress() { return emailAddress; } public void setEmailAddress(String emailAddress) { this.emailAddress = emailAddress; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public Boolean getPostPrivately() { return postPrivately; } public void setLastUpdated(Date lastUpdated) { this.lastUpdated = lastUpdated; setInPostingQueue(); } public Calendar getLastUpdated() { Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("UTC")); calendar.setTime(lastUpdated); return calendar; } public void setPostWithTags(boolean postWithTags) { this.postWithTags = postWithTags; } public boolean getPostWithTags() { return postWithTags; } public boolean getForcePostInPast() { return forcePostInPast; } public int getDaysToInclude() { return daysToInclude; } public void setDaysToInclude(int daysToInclude) { this.daysToInclude = daysToInclude; } public boolean isRepeats() { return repeats; } public void setRepeats(boolean repeats) { this.repeats = repeats; } public void setResults(String results) { this.results = results; } public String getResults() { return results; } public void setPostTemplate(String postTemplate) { this.postTemplate = postTemplate; } public String getPostTemplate() { return postTemplate; } public void setSubjectTemplate(String subjectTemplate) { this.subjectTemplate = subjectTemplate; } public String getSubjectTemplate() { return subjectTemplate; } public String getUrl() { return url; } public String getDefaultTags(){ return defaultTags; } }