Package com.esri.gpt.catalog.search

Source Code of com.esri.gpt.catalog.search.SearchFilterTemporal

/* See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* Esri Inc. licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License.  You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.esri.gpt.catalog.search;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;

import com.esri.gpt.framework.util.DateProxy;
import com.esri.gpt.framework.util.Val;

/**
* The Class SearchFilterTemporal.  Filter Bean class holding date information.
*/
@SuppressWarnings("serial")
public class SearchFilterTemporal implements ISearchFilter,
  ISearchFilterTemporal {

// class variables =============================================================

/** Class logger **/
private static final Logger LOG =
  Logger.getLogger(SearchFilterTemporal.class.getCanonicalName());

/**
* The Enum SelectedTimePeriod.
*/
public static enum SelectedTimePeriod {

/** The any time. */
any,

/** The period Before and after. */
beforeAndOrAfterPeriod,

}

/** The default time format. */
public static String DEFAULT_TIME_FORMAT = DateProxy.DEFAULT_TIME_FORMAT;

/** object for the default time format */
private static SimpleDateFormat DEFAULT_TIME_FORMAT_OBJ =
  new SimpleDateFormat(DEFAULT_TIME_FORMAT );

/**
* The Enum SaveParams.
*/
private static enum SaveParams {

/** The selected modified time. */
selectedModifiedTime,

/** The modified date to. */
modifiedDateTo,

/** The modified date from. */
modifiedDateFrom,

/** The modified date after.
modifiedDateAfter,*/

}

// instance variables ==========================================================
/** The date modified to. */
private String dateModfiedTo;

/** The date modified from. */
private String dateModifiedFrom;

/** The selected modified date option. */
private String selectedModifiedDateOption;

// constructor =================================================================
/**
* Instantiates a new search filter temporal.
*/
public SearchFilterTemporal() {
  reset();
}
// properties ==================================================================
/**
* Gets the date modified to.
*
* @return the date modified to (trimmed, never null)
*/
public String getDateModifiedTo() {
  return Val.chkStr(dateModfiedTo);
}

/**
* Sets the date modified to.
*
* @param dateModfiedTo the new date modified to
*/
public void setDateModifiedTo(String dateModfiedTo) {
  this.dateModfiedTo = dateModfiedTo;
}

/**
* Gets the date modified to as Date object.
*
* @return the date modified to (possibly null)
*/
public Date getDateModifiedToAsDate() {
  String dateTo = this.getDateModifiedTo();
  if ("".equals(dateTo)) {
    return null;
  }
  try {
    DateProxy dateProxy = new DateProxy();
    dateProxy.setDate(dateTo);
    this.setDateModifiedTo(
        DEFAULT_TIME_FORMAT_OBJ.format(dateProxy.asToTimestamp()));
    return dateProxy.asToTimestamp();
  } catch (Exception e) {
    LOG.log(Level.WARNING, "to date = " + dateTo + "could not convert to"
        + " timestamp object", e);
  }
  return null;
}

/**
* Gets the date modified from.
*
* @return the date modified from (trimmed, never null)
*/
public String getDateModifiedFrom() {
  return Val.chkStr(dateModifiedFrom);
}

/**
* Gets the date modified From as Date object.
*
* @return the date modified to (possibly null)
*/
public Date getDateModifiedFromAsDate() {
  String dateFrom = this.getDateModifiedFrom();
  if("".equals(dateFrom)) {
    return null;
  }
  try {
    DateProxy dateProxy = new DateProxy();
    dateProxy.setDate(dateFrom);
    this.setDateModifiedFrom(
        DEFAULT_TIME_FORMAT_OBJ.format(dateProxy.asFromTimestamp()));
    return dateProxy.asToTimestamp();
  } catch (Exception e) {
    LOG.log(Level.WARNING, "from date = " + dateFrom + "could not convert to"
        + " timestamp object", e);
  }
  return null;
  
}

/**
* Sets the date modified from.
*
* @param dateModifiedFrom the new date modified from
*/
public void setDateModifiedFrom(String dateModifiedFrom) {
  this.dateModifiedFrom = dateModifiedFrom;
}

/**
* Gets the selected modified date option.
*
* @return the selected modified date option (trimmed, never null or empty,
* default = "any")
*/
public String getSelectedModifiedDateOption() {
  if(selectedModifiedDateOption == null ||
      "".equals(selectedModifiedDateOption)) {
    selectedModifiedDateOption = SelectedTimePeriod.any.toString();
  }
  return Val.chkStr(selectedModifiedDateOption);
}

/**
* Sets the selected modified date option.
*
* @param selectedModifiedDateOption the new selected modified date option
*/
public void setSelectedModifiedDateOption(String selectedModifiedDateOption) {
  this.selectedModifiedDateOption = Val.chkStr(selectedModifiedDateOption);
}

// methods =====================================================================
/**
* Search parameters
* @return (never null)
*/
public SearchParameterMap getParams() {
  return this.getParams(new SimpleDateFormat(DEFAULT_TIME_FORMAT));
}

/**
* Checks if is equals.
*
* @param obj the obj
*
* @return true, if checks if is equals
*/
public boolean isEquals(Object obj) {
  if(!(obj instanceof SearchFilterTemporal)) {
    return false;
  }
  SearchFilterTemporal foreignObject =(SearchFilterTemporal) obj;
  return this.getParams().equals(foreignObject.getParams());
}

/**
* Checks if an object argument is the same as <b>this.
* @param obj
* @return true or false if object is equal to <b>this</b> this or not
*/
@Override
public boolean equals(Object obj) {
  return isEquals(obj);
}

/**
* Reset this object
*/
public void reset() {
  this.setDateModifiedTo(null);
  this.setDateModifiedFrom(null);
  this.setSelectedModifiedDateOption(null);
 
}

/**
* Sets the params.
*
* @param parameterMap the parameter map
*
* @throws SearchException the search exception
*/
public void setParams(SearchParameterMap parameterMap) throws SearchException {
 
  if (parameterMap == null) {
    return;
  }
  SearchParameterMap.Value value = parameterMap
      .get(SaveParams.selectedModifiedTime.name());
  this.setSelectedModifiedDateOption(value.getParamValue());

  try {
    value = parameterMap.get(SaveParams.modifiedDateFrom.name());
    if (value != null) {
      String format = value.getInfo();
      if (format != null && !"".equals(format)) {
        SimpleDateFormat sdfFormat = new SimpleDateFormat(format);
        Date date = sdfFormat.parse(value.getParamValue());
        this.setDateModifiedFrom(DEFAULT_TIME_FORMAT_OBJ.format(date));
      }
    }
  } catch (Exception e) {
    this.setDateModifiedFrom(null);
    LOG.log(Level.WARNING,
        "Could not get modified date from while deserializing" + e.getMessage());
  }
 
  try {
    value = parameterMap.get(SaveParams.modifiedDateTo.name());
    if (value != null) {
      String format = value.getInfo();
      if (format != null && !"".equals(format)) {
        SimpleDateFormat sdfFormat = new SimpleDateFormat(format);
        Date date = sdfFormat.parse(value.getParamValue());
        this.setDateModifiedTo(DEFAULT_TIME_FORMAT_OBJ.format(date));
      }
    }
  } catch (Exception e) {
    this.setDateModifiedTo(null);
    LOG.log(Level.WARNING,
        "Could not get modified date to while deserializing " + e.getMessage());
  }
}

/**
* Validate.
*
* @throws SearchException the search exception
*/
public void validate() throws SearchException {
 
  // Since this is called during business logic execution
  // Lets do some correction
  if(this.getDateModifiedFromAsDate() == null){
    this.setDateModifiedFrom(null);
  }
  if(this.getDateModifiedToAsDate() == null) {
    this.setDateModifiedTo(null);
  }
 
  if(this.getDateModifiedToAsDate() ==  null &&
      this.getDateModifiedFromAsDate() == null) {
      this.setSelectedModifiedDateOption(SelectedTimePeriod.any.name());
  } else if(this.getDateModifiedFromAsDate() != null &&
      this.getDateModifiedToAsDate() != null) {
    if(this.getDateModifiedFromAsDate().after(this.getDateModifiedToAsDate())) {
      String tmp = this.getDateModifiedFrom();
      this.setDateModifiedFrom(this.getDateModifiedTo());
      this.setDateModifiedTo(tmp);
    }
   
  }
 
 
 
}

/**
* Gets the params.
*
* @param format the format (if null, then default is used)
*
* @return the params (never null)
*/
public SearchParameterMap getParams(SimpleDateFormat format) {
 
  try {
    validate();
  } catch (SearchException e) {
   LOG.log(Level.WARNING,"", e);
  }
  SearchParameterMap map = new SearchParameterMap();
  map.put(SaveParams.selectedModifiedTime.name(),
           map.new Value(this.getSelectedModifiedDateOption()));
 
  Date fromDate = this.getDateModifiedFromAsDate();
  if(fromDate != null  && format != null) {
    map.put(SaveParams.modifiedDateFrom.name(),
        map.new Value(format.format(fromDate), format.toPattern()));
  }
 
  Date toDate = this.getDateModifiedToAsDate();
  if(toDate != null && format != null) {
    map.put(SaveParams.modifiedDateTo.name(),
        map.new Value(format.format(toDate), format.toPattern()));
  }
 
  return map;
}

/**
* String representation of class
* @return string representation
*/
@Override
public String toString(){
  return "\n{=======================\n" + this.getClass().getCanonicalName() +
    this.getParams().toString()
    + "\n===========================}";
}






}
TOP

Related Classes of com.esri.gpt.catalog.search.SearchFilterTemporal

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.