Android Open Source - msf-spaces-sdk-android Period Filter






From Project

Back to project page msf-spaces-sdk-android.

License

The source code is released under:

Apache License

If you think the Android project msf-spaces-sdk-android listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package de.imc.mirror.sdk.android.filter;
//  w w  w.  j  a v a 2s  . c o  m
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import org.jdom2.Element;

import de.imc.mirror.sdk.DataObject;
import de.imc.mirror.sdk.android.utils.DatatypeConverter;

/**
 * Restricts the period in time the data object was published. 
 * @author simon.schwantzer(at)im-c.de
 */
public class PeriodFilter implements de.imc.mirror.sdk.filter.PeriodFilter {
  private static final DateFormat ISO8061_FORMAT = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");

  private final Date from, to;
  
  /**
   * Creates a period filter.
   * @param from Specifies the earliest point in time the object was published.
   * @param to Specifies the latest point in time the object was published.
   */
  public PeriodFilter(Date from, Date to) {
    this.from = from;
    this.to = to;
  }
  
  @Override
  public Element getFilterAsXML(String queryNamespace) {
    Element element = new Element("period", queryNamespace);
    if (from != null) {
      StringBuffer dateTimeBuffer = new StringBuffer(ISO8061_FORMAT.format(from));
      // fix: timezone information is not encoded correctly (+0200 instead of +02:00)
      dateTimeBuffer.insert(dateTimeBuffer.length() - 2, ":");
      element.setAttribute("from", dateTimeBuffer.toString());
    }
    if (to != null) {
      // fix: timezone information is not encoded correctly (+0200 instead of +02:00)
      StringBuffer dateTimeBuffer = new StringBuffer(ISO8061_FORMAT.format(to));
      dateTimeBuffer.insert(dateTimeBuffer.length() - 2, ":");
      element.setAttribute("to", dateTimeBuffer.toString());
    }
    return element;
  }

  @Override
  public boolean isDataObjectValid(DataObject dataObject) {
    String timestampValue = dataObject.getElement().getAttributeValue("timestamp"); 
    if (timestampValue == null) {
      return false;
    }
    Date objectTimestamp;
    try {
      Calendar calendar = DatatypeConverter.parseDateTime(timestampValue);
      objectTimestamp = calendar.getTime();
    } catch (IllegalArgumentException e) {
      // Failed to parse timestamp
      return false;
    }
    if (from != null && objectTimestamp.before(from)) {
      return false;
    }
    if (to != null && objectTimestamp.after(to)) {
      return false;
    }
    return true;
  }

  @Override
  public Date getFrom() {
    return from;
  }

  @Override
  public Date getTo() {
    return to;
  }
  
  @Override
  public int hashCode() {
    int hc = 17;
      int hashMultiplier = 59;
      if (from != null) {
        hc = hc * hashMultiplier + from.hashCode();
      } else {
        hc = hc * hashMultiplier + 1;
      }
      if (to != null) hc = hc * hashMultiplier + to.hashCode();
    return hc;
  }

  @Override
  public boolean equals(Object obj) {
    if (obj == null || !(obj instanceof PeriodFilter)) return false;

    PeriodFilter that = (PeriodFilter) obj;
    if (this.from != null) {
      if (!this.from.equals(that.from)) return false;
    } else {
      if (that.from != null) return false;
    }
    
    if (this.to != null) {
      if (!this.to.equals(that.to)) return false;
    } else {
      if (that.to != null) return false;
    }
    
    return true;
  }

}




Java Source Code List

de.imc.mirror.sdk.android.CDMDataBuilder.java
de.imc.mirror.sdk.android.CDMData.java
de.imc.mirror.sdk.android.CommandType.java
de.imc.mirror.sdk.android.ConnectionConfigurationBuilder.java
de.imc.mirror.sdk.android.ConnectionConfiguration.java
de.imc.mirror.sdk.android.ConnectionHandler.java
de.imc.mirror.sdk.android.DataHandler.java
de.imc.mirror.sdk.android.DataModel.java
de.imc.mirror.sdk.android.DataObjectBuilder.java
de.imc.mirror.sdk.android.DataObject.java
de.imc.mirror.sdk.android.DataWrapper.java
de.imc.mirror.sdk.android.NetworkInformation.java
de.imc.mirror.sdk.android.OrgaSpace.java
de.imc.mirror.sdk.android.PrivateSpace.java
de.imc.mirror.sdk.android.ProviderInitializer.java
de.imc.mirror.sdk.android.RequestFuture.java
de.imc.mirror.sdk.android.SpaceChannel.java
de.imc.mirror.sdk.android.SpaceConfiguration.java
de.imc.mirror.sdk.android.SpaceHandler.java
de.imc.mirror.sdk.android.SpaceMember.java
de.imc.mirror.sdk.android.Space.java
de.imc.mirror.sdk.android.SpacesProvider.java
de.imc.mirror.sdk.android.TeamSpace.java
de.imc.mirror.sdk.android.UserInfo.java
de.imc.mirror.sdk.android.cdm.CDMData_0_1.java
de.imc.mirror.sdk.android.cdm.CDMData_0_2.java
de.imc.mirror.sdk.android.cdm.CDMData_1_0.java
de.imc.mirror.sdk.android.cdm.CDMData_2_0.java
de.imc.mirror.sdk.android.cdm.CreationInfo.java
de.imc.mirror.sdk.android.cdm.Reference.java
de.imc.mirror.sdk.android.cdm.References.java
de.imc.mirror.sdk.android.cdm.Summary.java
de.imc.mirror.sdk.android.data.ChannelsTable.java
de.imc.mirror.sdk.android.data.DataDB.java
de.imc.mirror.sdk.android.data.DataTable.java
de.imc.mirror.sdk.android.data.MembersTable.java
de.imc.mirror.sdk.android.data.SendTable.java
de.imc.mirror.sdk.android.data.SpacesTable.java
de.imc.mirror.sdk.android.exceptions.InvalidBuildException.java
de.imc.mirror.sdk.android.exceptions.RequestException.java
de.imc.mirror.sdk.android.filter.AndFilter.java
de.imc.mirror.sdk.android.filter.DataModelFilter.java
de.imc.mirror.sdk.android.filter.NamespaceFilter.java
de.imc.mirror.sdk.android.filter.OrFilter.java
de.imc.mirror.sdk.android.filter.PeriodFilter.java
de.imc.mirror.sdk.android.filter.PublisherFilter.java
de.imc.mirror.sdk.android.filter.ReferencesFilter.java
de.imc.mirror.sdk.android.packet.DeleteRequestIQ.java
de.imc.mirror.sdk.android.packet.DeleteResponseIQ.java
de.imc.mirror.sdk.android.packet.PersistenceServiceDeleteProvider.java
de.imc.mirror.sdk.android.packet.PersistenceServiceQueryProvider.java
de.imc.mirror.sdk.android.packet.QueryRequestIQ.java
de.imc.mirror.sdk.android.packet.QueryResponseIQ.java
de.imc.mirror.sdk.android.utils.DatatypeConverter.java
de.imc.mirror.sdk.android.utils.DateToXsdDatetimeFormatter.java
org.apache.xerces.jaxp.datatype.DatatypeFactoryImpl.java
org.apache.xerces.jaxp.datatype.DurationImpl.java
org.apache.xerces.jaxp.datatype.SerializedDuration.java
org.apache.xerces.jaxp.datatype.SerializedXMLGregorianCalendar.java
org.apache.xerces.jaxp.datatype.XMLGregorianCalendarImpl.java
org.apache.xerces.util.DatatypeMessageFormatter.java