/*
* Copyright (c) 2010, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* Licensed 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 org.wso2.carbon.bpel.ui;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
* Instance Filter Utils.
*/
public final class InstanceFilterUtil {
private static Log log = LogFactory.getLog(InstanceFilterUtil.class);
private InstanceFilterUtil() {
}
public static String createInstanceFilterStringFromFormData(final InstanceFilter filterData) {
if (!isValidFilter(filterData)) {
if (log.isDebugEnabled()) {
log.debug("Invalid Instance Filter.");
}
/*
* Here we set space as it is the default filter string.
* */
return " ";
}
StringBuilder filterBuilder = new StringBuilder();
// Sending space to back-end. Workaround to handle multi-tenant case.
// Decide to remove "name}}* namespace=*" filter used earlier to get all instances.
filterBuilder.append(" ");
if (filterData.getPid() != null && !filterData.getPid().equals("all") &&
!filterData.getPid().equals("noprocesses")) {
filterBuilder.append("pid=");
filterBuilder.append(filterData.getPid());
filterBuilder.append(" ");
}
if (filterData.getStatus() != null && filterData.getStatus().length > 0) {
filterBuilder.append("status=");
for (String status : filterData.getStatus()) {
filterBuilder.append(status);
filterBuilder.append("|");
}
filterBuilder.deleteCharAt(filterBuilder.lastIndexOf("|"));
filterBuilder.append(" ");
}
if (filterData.getStarteddate() != null && filterData.getStarteddate().trim().length() == 16) {
filterBuilder.append("started");
if (filterData.getStartedopt() != null && filterData.getStartedopt().equals("onb")) {
filterBuilder.append("<=");
} else if (filterData.getStartedopt() != null) {
filterBuilder.append(">=");
} else {
filterBuilder.append("=");
}
filterBuilder.append(filterData.getStarteddate().trim());
filterBuilder.append(" ");
}
if (filterData.getLadate() != null && filterData.getLadate().trim().length() == 16) {
filterBuilder.append("last-active");
if (filterData.getLadateopt() != null && filterData.getLadateopt().equals("onb")) {
filterBuilder.append("<=");
} else if (filterData.getLadateopt() != null) {
filterBuilder.append(">=");
} else {
filterBuilder.append("=");
}
filterBuilder.append(filterData.getLadate().trim());
filterBuilder.append(" ");
}
String finalFilter = filterBuilder.toString();
if (log.isDebugEnabled()) {
log.debug("Instance Filter:" + finalFilter);
}
return finalFilter;
}
public static String getOrderByFromFormData(final InstanceFilter filterData) {
StringBuilder filterBuilder = new StringBuilder();
if (filterData.getOrderby() != null && filterData.getAsdec() != null) {
if (filterData.getAsdec().equals("Ascending")) {
filterBuilder.append("-");
} else {
filterBuilder.append("+");
}
filterBuilder.append(filterData.getOrderby());
} else {
filterBuilder.append("-last-active");
}
if (log.isDebugEnabled()) {
log.debug("Instance Filter Order-by:" + filterBuilder);
}
return filterBuilder.toString();
}
private static boolean isValidFilter(final InstanceFilter filterData) {
return !((filterData.getPid() == null || filterData.getPid().equals("all")) &&
filterData.getStatus() == null && filterData.getStarteddate() == null &&
filterData.getStartedopt() == null && filterData.getLadate() == null &&
filterData.getLadateopt() == null);
}
}