knguyen 2005/11/15 17:11:08 CET
Modified files:
core/src/java/org/jahia/data/containers
ContainerSorterBean.java
ContainerSorterByContainerDefinition.java
core/src/webapp/WEB-INF/var/shared_templates
corporate_portal_templates.jar
Added files:
core/src/java/org/jahia/data/containers
ContainerSorterFieldValueProvider.java
core/src/java/org/jahia/data/containers/containersorterfieldvalueproviderimpl
FileNameProvider.java
FileSizeProvider.java
Log:
- extending Container Sorter in order to be able to sort by filename, file
size, ...
Revision Changes Path
1.15 +21 -2
jahia/core/src/java/org/jahia/data/containers/ContainerSorterBean.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/data/containers/ContainerSorterBean.java.diff?r1=1.14&r2=1.15&f=h
1.14 +21 -2
jahia/core/src/java/org/jahia/data/containers/ContainerSorterByContainerDefinition.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/data/containers/ContainerSorterByContainerDefinition.java.diff?r1=1.13&r2=1.14&f=h
1.1 +30 -0
jahia/core/src/java/org/jahia/data/containers/ContainerSorterFieldValueProvider.java
(new)
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/data/containers/ContainerSorterFieldValueProvider.java?rev=1.1&content-type=text/plain
1.1 +62 -0
jahia/core/src/java/org/jahia/data/containers/containersorterfieldvalueproviderimpl/FileNameProvider.java
(new)
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/data/containers/containersorterfieldvalueproviderimpl/FileNameProvider.java?rev=1.1&content-type=text/plain
1.1 +49 -0
jahia/core/src/java/org/jahia/data/containers/containersorterfieldvalueproviderimpl/FileSizeProvider.java
(new)
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/data/containers/containersorterfieldvalueproviderimpl/FileSizeProvider.java?rev=1.1&content-type=text/plain
1.77 +1423 -1470
jahia/core/src/webapp/WEB-INF/var/shared_templates/corporate_portal_templates.jar
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/webapp/WEB-INF/var/shared_templates/corporate_portal_templates.jar.diff?r1=1.76&r2=1.77&f=h
Index: ContainerSorterFieldValueProvider.java
====================================================================
package org.jahia.data.containers;
import org.jahia.services.version.EntryLoadRequest;
import org.jahia.params.ProcessingContext;
import java.io.Serializable;
/**
* Created by IntelliJ IDEA.
* User: hollis
* Date: 15 nov. 2005
* Time: 13:36:54
* To change this template use File | Settings | File Templates.
*/
public interface ContainerSorterFieldValueProvider extends Serializable {
/**
*
* @param fieldId
* @param params
* @param loadRequest
* @param defaultValue
* @return
*/
public String getFieldValue(int fieldId,
ProcessingContext params,
EntryLoadRequest loadRequest,
String defaultValue);
}
Index: ContainerSorterBean.java
===================================================================
RCS file:
/home/cvs/repository/jahia/core/src/java/org/jahia/data/containers/ContainerSorterBean.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- ContainerSorterBean.java 23 Sep 2005 11:22:32 -0000 1.14
+++ ContainerSorterBean.java 15 Nov 2005 16:11:04 -0000 1.15
@@ -86,6 +86,8 @@
protected EntryLoadRequest entryLoadRequest = EntryLoadRequest.CURRENT;
+ protected ContainerSorterFieldValueProvider fieldValueProvider;
+
protected ContainerSorterBean(){}
//--------------------------------------------------------------------------
@@ -468,6 +470,14 @@
this.updated = false;
}
+ public ContainerSorterFieldValueProvider getFieldValueProvider() {
+ return fieldValueProvider;
+ }
+
+ public void setFieldValueProvider(ContainerSorterFieldValueProvider
fieldValueProvider) {
+ this.fieldValueProvider = fieldValueProvider;
+ }
+
//--------------------------------------------------------------------------
/**
* Load an hashtable of pair/value (ctnID,fieldValue) for a given
ctnlist and a given fieldName.
@@ -577,6 +587,7 @@
Vector addedIds = new Vector();
int size = maps.size();
Iterator iterator = maps.values().iterator();
+ String valueToSort = null;
while ( iterator.hasNext() ){
TempField aField = (TempField)iterator.next();
if ( !addedIds.contains(new Integer(aField.id)) ){
@@ -591,10 +602,18 @@
aField.value = "";
}
Object obj = null;
+ valueToSort = aField.value;
+ if ( this.fieldValueProvider != null ){
+ valueToSort =
this.fieldValueProvider.getFieldValue(aField.id, Jahia.getThreadParamBean(),
+ this.getEntryLoadRequest(), aField.value);
+ if ( valueToSort == null ){
+ valueToSort = "";
+ }
+ }
if (convertValueAsLong) {
- obj = new DataBean(aField.ctnID,aField.value);
+ obj = new DataBean(aField.ctnID, valueToSort);
} else {
- obj = new StrDataBean(aField.ctnID, aField.value,
collator);
+ obj = new StrDataBean(aField.ctnID, valueToSort,
collator);
}
if (this.entryLoadRequest.isCurrent()) {
datas.add(obj);
Index: ContainerSorterByContainerDefinition.java
===================================================================
RCS file:
/home/cvs/repository/jahia/core/src/java/org/jahia/data/containers/ContainerSorterByContainerDefinition.java,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- ContainerSorterByContainerDefinition.java 23 Sep 2005 11:22:32 -0000
1.13
+++ ContainerSorterByContainerDefinition.java 15 Nov 2005 16:11:04 -0000
1.14
@@ -86,6 +86,8 @@
//** sorted ctnids **/
protected Vector result;
+ protected ContainerSorterFieldValueProvider fieldValueProvider;
+
protected EntryLoadRequest entryLoadRequest = EntryLoadRequest.CURRENT;
//--------------------------------------------------------------------------
@@ -435,6 +437,14 @@
this.updated = false;
}
+ public ContainerSorterFieldValueProvider getFieldValueProvider() {
+ return fieldValueProvider;
+ }
+
+ public void setFieldValueProvider(ContainerSorterFieldValueProvider
fieldValueProvider) {
+ this.fieldValueProvider = fieldValueProvider;
+ }
+
//--------------------------------------------------------------------------
/**
* Load an hashtable of pair/value (ctnID,fieldValue) .
@@ -593,6 +603,7 @@
Vector addedIds = new Vector();
int size = maps.size();
Iterator iterator = maps.values().iterator();
+ String valueToSort = null;
while ( iterator.hasNext() ){
TempField aField = (TempField)iterator.next();
if ( !addedIds.contains(new Integer(aField.id)) ){
@@ -607,10 +618,18 @@
aField.value = "";
}
Object obj = null;
+ valueToSort = aField.value;
+ if ( this.fieldValueProvider != null ){
+ valueToSort =
this.fieldValueProvider.getFieldValue(aField.id, Jahia.getThreadParamBean(),
+ this.getEntryLoadRequest(), aField.value);
+ if ( valueToSort == null ){
+ valueToSort = "";
+ }
+ }
if (this.numberSort) {
- obj = new DataBean(aField.ctnID,aField.value);
+ obj = new DataBean(aField.ctnID, valueToSort);
} else {
- obj = new StrDataBean(aField.ctnID, aField.value,
collator);
+ obj = new StrDataBean(aField.ctnID, valueToSort,
collator);
}
if (this.entryLoadRequest.isCurrent()) {
datas.add(obj);
Index: FileNameProvider.java
====================================================================
package org.jahia.data.containers.containersorterfieldvalueproviderimpl;
import org.jahia.services.version.EntryLoadRequest;
import org.jahia.params.ProcessingContext;
import org.jahia.data.containers.ContainerSorterFieldValueProvider;
import org.jahia.data.fields.JahiaFileFieldWrapper;
import org.jahia.data.fields.LoadFlags;
import org.jahia.data.files.JahiaFileField;
import org.jahia.registries.ServicesRegistry;
import org.jahia.bin.Jahia;
/**
* Created by IntelliJ IDEA.
* User: hollis
* Date: 15 nov. 2005
* Time: 13:36:54
* To change this template use File | Settings | File Templates.
*/
public class FileNameProvider implements ContainerSorterFieldValueProvider {
private boolean withFullPath;
/**
* Returns the file name of a file within a JahiaFieldFieldWrapper
*
* @param fieldId
* @param params
* @param loadRequest
* @param defaultValue
* @return
*/
public String getFieldValue(int fieldId,
ProcessingContext params,
EntryLoadRequest loadRequest,
String defaultValue) {
String value;
// use the file name as field value
try {
JahiaFileFieldWrapper jahiaField = (JahiaFileFieldWrapper)
ServicesRegistry.getInstance()
.getJahiaFieldService()
.loadField(fieldId, LoadFlags.ALL,
Jahia.getThreadParamBean());
JahiaFileField fileField = (JahiaFileField)jahiaField.getObject();
value = fileField.getRealName();
if ( !withFullPath && value != null && value.indexOf("/") != -1 )
{
value =
value.substring(value.lastIndexOf("/")+1,value.length());
}
} catch ( Throwable t ){
// could not retrieve the file name
value = "";
}
return value;
}
public boolean isWithFullPath() {
return withFullPath;
}
public void setWithFullPath(boolean withFullPath) {
this.withFullPath = withFullPath;
}
}
Index: FileSizeProvider.java
====================================================================
package org.jahia.data.containers.containersorterfieldvalueproviderimpl;
import org.jahia.services.version.EntryLoadRequest;
import org.jahia.params.ProcessingContext;
import org.jahia.data.containers.ContainerSorterFieldValueProvider;
import org.jahia.data.fields.JahiaFileFieldWrapper;
import org.jahia.data.fields.LoadFlags;
import org.jahia.data.files.JahiaFileField;
import org.jahia.registries.ServicesRegistry;
import org.jahia.bin.Jahia;
/**
* Created by IntelliJ IDEA.
* User: hollis
* Date: 15 nov. 2005
* Time: 13:36:54
* To change this template use File | Settings | File Templates.
*/
public class FileSizeProvider implements ContainerSorterFieldValueProvider {
/**
* Returns the file size of a file within a JahiaFieldFieldWrapper
*
* @param fieldId
* @param params
* @param loadRequest
* @param defaultValue
* @return
*/
public String getFieldValue(int fieldId,
ProcessingContext params,
EntryLoadRequest loadRequest,
String defaultValue) {
String value;
// use the file size as field value
try {
JahiaFileFieldWrapper jahiaField = (JahiaFileFieldWrapper)
ServicesRegistry.getInstance()
.getJahiaFieldService()
.loadField(fieldId, LoadFlags.ALL,
Jahia.getThreadParamBean());
JahiaFileField fileField = (JahiaFileField)jahiaField.getObject();
value = String.valueOf(fileField.getSize());
} catch ( Throwable t ){
// could not retrieve the file size
value = "0";
}
return value;
}
}
Index: corporate_portal_templates.jar
===================================================================
<<Binary file>>