blob: cdd436fc3cd22265ad0743dc7589ba986c3b8eeb [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. The ASF 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. For additional information regarding
* copyright in this work, please see the NOTICE file in the top level
* directory of this distribution.
*/
package org.apache.roller.weblogger.ui.struts2.editor;
import java.util.ArrayList;
import java.util.List;
import java.util.ResourceBundle;
import org.apache.commons.lang3.StringUtils;
import org.apache.roller.util.RollerConstants;
import org.apache.roller.weblogger.pojos.MediaFileFilter;
import org.apache.roller.weblogger.pojos.MediaFileType;
import org.apache.roller.weblogger.pojos.MediaFileFilter.MediaFileOrder;
import org.apache.roller.weblogger.pojos.MediaFileFilter.SizeFilterType;
/**
* Bean for holding media file search criteria.
*/
public class MediaFileSearchBean {
private transient ResourceBundle bundle =
ResourceBundle.getBundle("ApplicationResources");
public static final int PAGE_SIZE = 10;
// Media file name as search criteria
private String name;
// Media file type as search criteria
private String type;
// Type of size filter as search criteria
private String sizeFilterType;
// Size of file as search criteria
private long size;
// Size unit
private String sizeUnit;
// Tags as search criteria
private String tags;
// Page number of results
private int pageNum = 0;
// Sort option for search results
private int sortOption;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getType() {
return type;
}
public String getTypeLabel() {
return this.bundle.getString(type);
}
public void setType(String type) {
this.type = type;
}
public String getSizeFilterType() {
return sizeFilterType;
}
public void setSizeFilterType(String sizeFilterType) {
this.sizeFilterType = sizeFilterType;
}
public String getSizeFilterTypeLabel() {
return this.bundle.getString(sizeFilterType);
}
public long getSize() {
return size;
}
public void setSize(long size) {
this.size = size;
}
public String getSizeUnit() {
return sizeUnit;
}
public String getSizeUnitLabel() {
return this.bundle.getString(sizeUnit);
}
public void setSizeUnit(String sizeUnit) {
this.sizeUnit = sizeUnit;
}
public String getTags() {
return tags;
}
public void setTags(String tags) {
this.tags = tags;
}
public int getPageNum() {
return pageNum;
}
public void setPageNum(int pageNum) {
this.pageNum = pageNum;
}
public int getSortOption() {
return sortOption;
}
public void setSortOption(int sortOption) {
this.sortOption = sortOption;
}
/**
* Copies data from this bean to media file filter object.
*
*/
public void copyTo(MediaFileFilter dataHolder) {
dataHolder.setName(this.name);
if (!StringUtils.isEmpty(this.type)) {
MediaFileType filterType = null;
if ("mediaFileView.audio".equals(this.type)) {
filterType = MediaFileType.AUDIO;
} else if ("mediaFileView.video".equals(this.type)) {
filterType = MediaFileType.VIDEO;
} else if ("mediaFileView.image".equals(this.type)) {
filterType = MediaFileType.IMAGE;
} else if ("mediaFileView.others".equals(this.type)) {
filterType = MediaFileType.OTHERS;
}
dataHolder.setType(filterType);
}
if (this.size > 0) {
SizeFilterType sftype = SizeFilterType.EQ;
if ("mediaFileView.gt".equals(this.sizeFilterType)) {
sftype = SizeFilterType.GT;
} else if ("mediaFileView.ge".equals(this.sizeFilterType)) {
sftype = SizeFilterType.GTE;
} else if ("mediaFileView.eq".equals(this.sizeFilterType)) {
sftype = SizeFilterType.EQ;
} else if ("mediaFileView.le".equals(this.sizeFilterType)) {
sftype = SizeFilterType.LTE;
} else if ("mediaFileView.lt".equals(this.sizeFilterType)) {
sftype = SizeFilterType.LT;
}
dataHolder.setSizeFilterType(sftype);
long filterSize = this.size ;
if ("mediaFileView.kb".equals(this.sizeUnit)) {
filterSize = this.size * RollerConstants.ONE_KB_IN_BYTES;
} else if ("mediaFileView.mb".equals(this.sizeUnit)) {
filterSize = this.size * RollerConstants.ONE_MB_IN_BYTES;
}
dataHolder.setSize(filterSize);
}
if (!StringUtils.isEmpty(this.tags)) {
List<String> tagsSet = new ArrayList<String>();
for (String tag : this.tags.split(" ")) {
tagsSet.add(tag);
}
dataHolder.setTags(tagsSet);
}
dataHolder.setStartIndex(pageNum * PAGE_SIZE);
// set length to fetch to one more than what is required.
// this would help us determine whether there are more pages
dataHolder.setLength(PAGE_SIZE + 1);
MediaFileOrder order;
switch (this.sortOption) {
case 0:
order = MediaFileOrder.NAME;
break;
case 1:
order = MediaFileOrder.DATE_UPLOADED;
break;
case 2:
order = MediaFileOrder.TYPE;
break;
default:
order = null;
}
dataHolder.setOrder(order);
}
}