/* * Copyright � 2016 TIBCO Software,Inc.All rights reserved. * http://community.jaspersoft.com/project/jaspermobile-android * * Unless you have purchased a commercial license agreement from TIBCO Jaspersoft, * the following license terms apply: * * This program is part of TIBCO Jaspersoft Mobile for Android. * * TIBCO Jaspersoft Mobile is free software:you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation,either version 3of the License,or * (at your option)any later version. * * TIBCO Jaspersoft Mobile is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY;without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with TIBCO Jaspersoft Mobile for Android.If not,see * <http://www.gnu.org/licenses/lgpl>. */ package com.jaspersoft.android.sdk.client.oxm.resource; import android.os.Parcel; import android.os.Parcelable; import java.util.ArrayList; import java.util.List; /** * @author Ivan Gadzhega * @since 2.0 */ public class ResourceLookupSearchCriteria implements Parcelable { private String folderUri; private String query; private List<String> types; private String sortBy; private String accessType; private boolean recursive = true; private boolean forceFullPage; private int offset = 0; private int limit = 100; public ResourceLookupSearchCriteria() { } public ResourceLookupSearchCriteria(ResourceLookupSearchCriteria oldCriteria) { this.folderUri = oldCriteria.getFolderUri(); this.query = oldCriteria.getQuery(); this.types = new ArrayList<String>(oldCriteria.getTypes()); this.sortBy = oldCriteria.getSortBy(); this.recursive = oldCriteria.isRecursive(); this.forceFullPage = oldCriteria.isForceFullPage(); this.offset = oldCriteria.getOffset(); this.limit = oldCriteria.getLimit(); this.accessType = oldCriteria.getAccessType(); } //--------------------------------------------------------------------- // Parcelable //--------------------------------------------------------------------- public ResourceLookupSearchCriteria(Parcel source) { this.folderUri = source.readString(); this.query = source.readString(); this.types = source.createStringArrayList(); this.sortBy = source.readString(); this.recursive = source.readByte() != 0; this.forceFullPage = source.readByte() != 0; this.offset = source.readInt(); this.limit = source.readInt(); this.accessType = source.readString(); } public static final Creator CREATOR = new Creator() { public ResourceLookupSearchCriteria createFromParcel(Parcel source) { return new ResourceLookupSearchCriteria(source); } public ResourceLookupSearchCriteria[] newArray(int size) { return new ResourceLookupSearchCriteria[size]; } }; @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(folderUri); dest.writeString(query); dest.writeStringList(types); dest.writeString(sortBy); dest.writeByte((byte) (recursive ? 1 : 0)); dest.writeByte((byte) (forceFullPage ? 1 : 0)); dest.writeInt(offset); dest.writeInt(limit); dest.writeString(accessType); } //--------------------------------------------------------------------- // Getters & Setters //--------------------------------------------------------------------- /** * {@link ResourceLookupSearchCriteria#setFolderUri} */ public String getFolderUri() { return folderUri; } /** * The path of the base folder for the search. */ public void setFolderUri(String folderUri) { this.folderUri = folderUri; } /** * {@link ResourceLookupSearchCriteria#setQuery} */ public String getQuery() { return query; } /** * Search for resources having the specified text in the name or description. * Note that the search string does not match in the ID of resources. */ public void setQuery(String query) { this.query = query; } /** * {@link ResourceLookupSearchCriteria#setTypes} */ public List<String> getTypes() { return types; } /** * Match only resources of the given type. Multiple type parameters are allowed. * Wrong values are ignored. */ public void setTypes(List<String> types) { this.types = types; } /** * {@link ResourceLookupSearchCriteria#setSortBy} */ public String getSortBy() { return sortBy; } /** * Filtering by access events. Can be viewed or modified. */ public String getAccessType() { return accessType; } /** * Filtering by access events. Can be viewed or modified. */ public void setAccessType(String accessType) { this.accessType = accessType; } /** * One of the following strings representing a field in the results to sort by: uri, * label, description, type, creationDate, updateDate, accessTime, or popularity * (based on access events). */ public void setSortBy(String sortBy) { this.sortBy = sortBy; } /** * {@link ResourceLookupSearchCriteria#setRecursive} */ public boolean isRecursive() { return recursive; } /** * Indicates whether search should include all sub-folders recursively. When * omitted, the default behavior is recursive (true). */ public void setRecursive(boolean recursive) { this.recursive = recursive; } /** * {@link ResourceLookupSearchCriteria#setOffset} */ public int getOffset() { return offset; } /** * Used for pagination to request an offset in the set of results. This is * equivalent to a specific page number. The default offset is 1 (first page). */ public void setOffset(int offset) { this.offset = offset; } /** * {@link ResourceLookupSearchCriteria#setLimit} */ public int getLimit() { return limit; } /** * Used for pagination to specify the maximum number of resources to return in * each response. This is equivalent to the number of results per page. The * default limit is 100. */ public void setLimit(int limit) { this.limit = limit; } /** * {@link ResourceLookupSearchCriteria#setForceFullPage} */ public boolean isForceFullPage() { return forceFullPage; } /** * With forceFullPage=false, * This is the offset to request the next page. The Next-Offset is equivalent to Start-Index+limit, except on the last page. * On the the last page, the Next-Offset is omitted to indicate there are no further pages. * {@link ResourceLookupSearchCriteria#setLimit} */ /** * With <b>forceFullPage=false</b> we receive different pagination experience. Considering header * for response Next-Offset which is the offset to request the next page. The Next-Offset * is equivalent to Start-Index+limit, except on the last page. * On the the last page, the Next-Offset is omitted to indicate there are no further pages. * <br/> * <br/> * With <b>forceFullPage=true</b> enables full page pagination. Depending on the type of search and * user permissions, this parameter can cause significant performance delays. * * @param forceFullPage accepts boolean value */ public void setForceFullPage(boolean forceFullPage) { this.forceFullPage = forceFullPage; } }