Salvatore La Manna
3 anni fa
73 ha cambiato i file con 12445 aggiunte e 30 eliminazioni
@ -0,0 +1,11 @@ |
|||||||
|
app.server.tomcat.lib.global.dir = /home/ture/liferay/portali/sismica/tomcat-7.0.62/lib/ext |
||||||
|
app.server.tomcat.deploy.dir = /home/ture/liferay/portali/sismica/tomcat-7.0.62/webapps |
||||||
|
app.server.parent.dir = /home/ture/liferay/portali/sismica |
||||||
|
app.server.tomcat.dir = /home/ture/liferay/portali/sismica/tomcat-7.0.62 |
||||||
|
app.server.type = tomcat |
||||||
|
app.server.tomcat.portal.dir = /home/ture/liferay/portali/sismica/tomcat-7.0.62/webapps/ROOT |
||||||
|
javac.encoding = UTF-8 |
||||||
|
ext.work.dir=/home/ture/liferay/src/work |
||||||
|
app.server.dir=/home/ture/liferay/src/work/liferay-portal-6.2-ce-ga6/tomcat-7.0.62 |
||||||
|
app.server.zip.name=/home/ture/liferay/src/liferay-portal-tomcat-6.2-ce-ga6-patched.zip |
||||||
|
|
@ -0,0 +1,27 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<classpath> |
||||||
|
<classpathentry kind="src" path="docroot/WEB-INF/src"/> |
||||||
|
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jdk1.7.0_80"> |
||||||
|
<attributes> |
||||||
|
<attribute name="owner.project.facets" value="java"/> |
||||||
|
</attributes> |
||||||
|
</classpathentry> |
||||||
|
<classpathentry kind="con" path="org.eclipse.jst.server.core.container/com.liferay.ide.eclipse.server.tomcat.runtimeClasspathProvider/Liferay v6.2 CE (Tomcat 7)"> |
||||||
|
<attributes> |
||||||
|
<attribute name="owner.project.facets" value="jst.web"/> |
||||||
|
</attributes> |
||||||
|
</classpathentry> |
||||||
|
<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/> |
||||||
|
<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/> |
||||||
|
<classpathentry kind="con" path="com.liferay.ide.eclipse.server.plugin.container/hook"> |
||||||
|
<attributes> |
||||||
|
<attribute name="org.eclipse.jst.component.nondependency" value=""/> |
||||||
|
</attributes> |
||||||
|
</classpathentry> |
||||||
|
<classpathentry kind="con" path="org.apache.ivyde.eclipse.cpcontainer.IVYDE_CONTAINER/?project=sicilia-p7m-preview-hook&ivyXmlPath=ivy.xml&confs=*&ivySettingsPath=%24%7Bliferay_sdk_dir%3Asicilia-p7m-preview-hook%7D%2Fivy-settings.xml&loadSettingsOnDemand=false&ivyUserDir=%24%7Bliferay_sdk_dir%3Asicilia-p7m-preview-hook%7D%2F.ivy&propertyFiles="> |
||||||
|
<attributes> |
||||||
|
<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/> |
||||||
|
</attributes> |
||||||
|
</classpathentry> |
||||||
|
<classpathentry kind="output" path="docroot/WEB-INF/classes"/> |
||||||
|
</classpath> |
@ -0,0 +1,37 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<projectDescription> |
||||||
|
<name>sicilia-p7m-preview-hook</name> |
||||||
|
<comment></comment> |
||||||
|
<projects> |
||||||
|
</projects> |
||||||
|
<buildSpec> |
||||||
|
<buildCommand> |
||||||
|
<name>org.eclipse.wst.jsdt.core.javascriptValidator</name> |
||||||
|
<arguments> |
||||||
|
</arguments> |
||||||
|
</buildCommand> |
||||||
|
<buildCommand> |
||||||
|
<name>org.eclipse.jdt.core.javabuilder</name> |
||||||
|
<arguments> |
||||||
|
</arguments> |
||||||
|
</buildCommand> |
||||||
|
<buildCommand> |
||||||
|
<name>org.eclipse.wst.common.project.facet.core.builder</name> |
||||||
|
<arguments> |
||||||
|
</arguments> |
||||||
|
</buildCommand> |
||||||
|
<buildCommand> |
||||||
|
<name>org.eclipse.wst.validation.validationbuilder</name> |
||||||
|
<arguments> |
||||||
|
</arguments> |
||||||
|
</buildCommand> |
||||||
|
</buildSpec> |
||||||
|
<natures> |
||||||
|
<nature>org.eclipse.jem.workbench.JavaEMFNature</nature> |
||||||
|
<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature> |
||||||
|
<nature>org.eclipse.wst.common.project.facet.core.nature</nature> |
||||||
|
<nature>org.eclipse.jdt.core.javanature</nature> |
||||||
|
<nature>org.apache.ivyde.eclipse.ivynature</nature> |
||||||
|
<nature>org.eclipse.wst.jsdt.core.jsNature</nature> |
||||||
|
</natures> |
||||||
|
</projectDescription> |
@ -0,0 +1,12 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<classpath> |
||||||
|
<classpathentry kind="src" path="docroot"/> |
||||||
|
<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.JRE_CONTAINER"/> |
||||||
|
<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.WebProject"> |
||||||
|
<attributes> |
||||||
|
<attribute name="hide" value="true"/> |
||||||
|
</attributes> |
||||||
|
</classpathentry> |
||||||
|
<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.baseBrowserLibrary"/> |
||||||
|
<classpathentry kind="output" path=""/> |
||||||
|
</classpath> |
@ -0,0 +1,7 @@ |
|||||||
|
eclipse.preferences.version=1 |
||||||
|
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled |
||||||
|
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 |
||||||
|
org.eclipse.jdt.core.compiler.compliance=1.7 |
||||||
|
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error |
||||||
|
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error |
||||||
|
org.eclipse.jdt.core.compiler.source=1.7 |
@ -0,0 +1,8 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?><project-modules id="moduleCoreId" project-version="1.5.0"> |
||||||
|
<wb-module deploy-name="sicilia-p7m-preview-hook"> |
||||||
|
<wb-resource deploy-path="/" source-path="/docroot" tag="defaultRootSource"/> |
||||||
|
<wb-resource deploy-path="/WEB-INF/classes" source-path="/docroot/WEB-INF/src"/> |
||||||
|
<property name="context-root" value="sicilia-p7m-preview-hook"/> |
||||||
|
<property name="java-output-path" value="/sicilia-p7m-preview-hook/docroot/WEB-INF/classes"/> |
||||||
|
</wb-module> |
||||||
|
</project-modules> |
@ -0,0 +1,7 @@ |
|||||||
|
<root> |
||||||
|
<facet id="liferay.hook"> |
||||||
|
<node name="libprov"> |
||||||
|
<attribute name="provider-id" value="com.liferay.ide.eclipse.plugin.hook.libraryProvider"/> |
||||||
|
</node> |
||||||
|
</facet> |
||||||
|
</root> |
@ -0,0 +1,11 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<faceted-project> |
||||||
|
<runtime name="Liferay v6.2 CE (Tomcat 7)"/> |
||||||
|
<fixed facet="jst.web"/> |
||||||
|
<fixed facet="java"/> |
||||||
|
<fixed facet="wst.jsdt.web"/> |
||||||
|
<installed facet="java" version="1.7"/> |
||||||
|
<installed facet="jst.web" version="3.0"/> |
||||||
|
<installed facet="liferay.hook" version="6.0"/> |
||||||
|
<installed facet="wst.jsdt.web" version="1.0"/> |
||||||
|
</faceted-project> |
@ -0,0 +1 @@ |
|||||||
|
org.eclipse.wst.jsdt.launching.baseBrowserLibrary |
@ -0,0 +1 @@ |
|||||||
|
Window |
@ -0,0 +1,6 @@ |
|||||||
|
<?xml version="1.0"?> |
||||||
|
<!DOCTYPE project> |
||||||
|
|
||||||
|
<project name="sicilia-p7m-preview-hook" basedir="." default="deploy"> |
||||||
|
<import file="../build-common-hook.xml" /> |
||||||
|
</project> |
@ -0,0 +1,3 @@ |
|||||||
|
Manifest-Version: 1.0 |
||||||
|
Class-Path: |
||||||
|
|
@ -0,0 +1 @@ |
|||||||
|
/classes/ |
@ -0,0 +1,6 @@ |
|||||||
|
<?xml version="1.0"?> |
||||||
|
<!DOCTYPE hook PUBLIC "-//Liferay//DTD Hook 6.2.0//EN" "http://www.liferay.com/dtd/liferay-hook_6_2_0.dtd"> |
||||||
|
|
||||||
|
<hook> |
||||||
|
<portal-properties>portal-ext.properties</portal-properties> |
||||||
|
</hook> |
@ -0,0 +1,34 @@ |
|||||||
|
name=Sicilia P7M preview |
||||||
|
module-group-id=liferay |
||||||
|
module-incremental-version=1 |
||||||
|
tags= |
||||||
|
short-description= |
||||||
|
long-description= |
||||||
|
change-log= |
||||||
|
page-url=http://www.liferay.com |
||||||
|
author=Liferay, Inc. |
||||||
|
licenses=LGPL |
||||||
|
liferay-versions=6.2.0+ |
||||||
|
portal-dependency-jars= \ |
||||||
|
ant.jar, \ |
||||||
|
chardet.jar, \ |
||||||
|
commons-beanutils.jar, \ |
||||||
|
commons-collections.jar, \ |
||||||
|
commons-compress.jar, \ |
||||||
|
commons-configuration.jar, \ |
||||||
|
commons-digester.jar, \ |
||||||
|
commons-io.jar, \ |
||||||
|
commons-lang.jar, \ |
||||||
|
easyconf.jar, \ |
||||||
|
gif89.jar, \ |
||||||
|
im4java.jar, \ |
||||||
|
jai_codec.jar, \ |
||||||
|
jai_core.jar, \ |
||||||
|
jodconverter.jar, \ |
||||||
|
pdfbox.jar, \ |
||||||
|
poi.jar, \ |
||||||
|
portal-service.jar, \ |
||||||
|
ridl.jar, \ |
||||||
|
tika-core.jar, \ |
||||||
|
xpp3.jar, \ |
||||||
|
xstream.jar |
@ -0,0 +1,462 @@ |
|||||||
|
/** |
||||||
|
* Copyright (c) 2000-2013 Liferay, Inc. All rights reserved. |
||||||
|
* |
||||||
|
* This library 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 2.1 of the License, or (at your option) |
||||||
|
* any later version. |
||||||
|
* |
||||||
|
* This library 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. |
||||||
|
*/ |
||||||
|
|
||||||
|
package com.liferay.portal.configuration; |
||||||
|
|
||||||
|
import com.germinus.easyconf.ComponentConfiguration; |
||||||
|
import com.germinus.easyconf.ComponentProperties; |
||||||
|
|
||||||
|
import com.liferay.portal.configuration.easyconf.ClassLoaderAggregateProperties; |
||||||
|
import com.liferay.portal.configuration.easyconf.ClassLoaderComponentConfiguration; |
||||||
|
import com.liferay.portal.kernel.configuration.Filter; |
||||||
|
import com.liferay.portal.kernel.log.Log; |
||||||
|
import com.liferay.portal.kernel.log.LogFactoryUtil; |
||||||
|
import com.liferay.portal.kernel.util.ArrayUtil; |
||||||
|
import com.liferay.portal.kernel.util.PropertiesUtil; |
||||||
|
import com.liferay.portal.kernel.util.StringBundler; |
||||||
|
import com.liferay.portal.kernel.util.Validator; |
||||||
|
import com.liferay.portal.model.Company; |
||||||
|
import com.liferay.portal.model.CompanyConstants; |
||||||
|
import com.liferay.portal.service.CompanyLocalServiceUtil; |
||||||
|
|
||||||
|
import java.lang.reflect.Field; |
||||||
|
|
||||||
|
import java.util.HashSet; |
||||||
|
import java.util.Iterator; |
||||||
|
import java.util.List; |
||||||
|
import java.util.Map; |
||||||
|
import java.util.Properties; |
||||||
|
import java.util.Set; |
||||||
|
import java.util.concurrent.ConcurrentHashMap; |
||||||
|
|
||||||
|
import org.apache.commons.configuration.CompositeConfiguration; |
||||||
|
import org.apache.commons.configuration.Configuration; |
||||||
|
import org.apache.commons.configuration.MapConfiguration; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author Brian Wing Shun Chan |
||||||
|
* @author Shuyang Zhou |
||||||
|
*/ |
||||||
|
public class ConfigurationImpl |
||||||
|
implements com.liferay.portal.kernel.configuration.Configuration { |
||||||
|
|
||||||
|
public ConfigurationImpl(ClassLoader classLoader, String name) { |
||||||
|
this(classLoader, name, CompanyConstants.SYSTEM); |
||||||
|
} |
||||||
|
|
||||||
|
public ConfigurationImpl( |
||||||
|
ClassLoader classLoader, String name, long companyId) { |
||||||
|
|
||||||
|
String webId = null; |
||||||
|
|
||||||
|
if (companyId > CompanyConstants.SYSTEM) { |
||||||
|
try { |
||||||
|
Company company = CompanyLocalServiceUtil.getCompanyById( |
||||||
|
companyId); |
||||||
|
|
||||||
|
webId = company.getWebId(); |
||||||
|
} |
||||||
|
catch (Exception e) { |
||||||
|
_log.error(e, e); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
_componentConfiguration = new ClassLoaderComponentConfiguration( |
||||||
|
classLoader, webId, name); |
||||||
|
|
||||||
|
printSources(companyId, webId); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void addProperties(Properties properties) { |
||||||
|
try { |
||||||
|
ComponentProperties componentProperties = |
||||||
|
_componentConfiguration.getProperties(); |
||||||
|
|
||||||
|
ClassLoaderAggregateProperties classLoaderAggregateProperties = |
||||||
|
(ClassLoaderAggregateProperties) |
||||||
|
componentProperties.toConfiguration(); |
||||||
|
|
||||||
|
Field field1 = CompositeConfiguration.class.getDeclaredField( |
||||||
|
"configList"); |
||||||
|
|
||||||
|
field1.setAccessible(true); |
||||||
|
|
||||||
|
// Add to configList of base conf
|
||||||
|
|
||||||
|
List<Configuration> configurations = |
||||||
|
(List<Configuration>)field1.get(classLoaderAggregateProperties); |
||||||
|
|
||||||
|
MapConfiguration newConfiguration = new MapConfiguration( |
||||||
|
properties); |
||||||
|
|
||||||
|
configurations.add(0, newConfiguration); |
||||||
|
|
||||||
|
// Add to configList of AggregatedProperties itself
|
||||||
|
|
||||||
|
CompositeConfiguration compositeConfiguration = |
||||||
|
classLoaderAggregateProperties.getBaseConfiguration(); |
||||||
|
|
||||||
|
configurations = (List<Configuration>)field1.get( |
||||||
|
compositeConfiguration); |
||||||
|
|
||||||
|
configurations.add(0, newConfiguration); |
||||||
|
|
||||||
|
clearCache(); |
||||||
|
} |
||||||
|
catch (Exception e) { |
||||||
|
_log.error("The properties could not be added", e); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void clearCache() { |
||||||
|
_values.clear(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean contains(String key) { |
||||||
|
Object value = _values.get(key); |
||||||
|
|
||||||
|
if (value == null) { |
||||||
|
ComponentProperties componentProperties = getComponentProperties(); |
||||||
|
|
||||||
|
value = componentProperties.getProperty(key); |
||||||
|
|
||||||
|
if (value == null) { |
||||||
|
value = _nullValue; |
||||||
|
} |
||||||
|
|
||||||
|
_values.put(key, value); |
||||||
|
} |
||||||
|
|
||||||
|
if (value == _nullValue) { |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
return true; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String get(String key) { |
||||||
|
Object value = _values.get(key); |
||||||
|
|
||||||
|
if (value == null) { |
||||||
|
ComponentProperties componentProperties = getComponentProperties(); |
||||||
|
|
||||||
|
value = componentProperties.getString(key); |
||||||
|
|
||||||
|
if (value == null) { |
||||||
|
value = _nullValue; |
||||||
|
} |
||||||
|
|
||||||
|
_values.put(key, value); |
||||||
|
} |
||||||
|
else if (_PRINT_DUPLICATE_CALLS_TO_GET) { |
||||||
|
System.out.println("Duplicate call to get " + key); |
||||||
|
} |
||||||
|
|
||||||
|
if (value instanceof String) { |
||||||
|
return (String)value; |
||||||
|
} |
||||||
|
|
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String get(String key, Filter filter) { |
||||||
|
String filterCacheKey = buildFilterCacheKey(key, filter, false); |
||||||
|
|
||||||
|
Object value = null; |
||||||
|
|
||||||
|
if (filterCacheKey != null) { |
||||||
|
value = _values.get(filterCacheKey); |
||||||
|
} |
||||||
|
|
||||||
|
if (value == null) { |
||||||
|
ComponentProperties componentProperties = getComponentProperties(); |
||||||
|
|
||||||
|
value = componentProperties.getString( |
||||||
|
key, getEasyConfFilter(filter)); |
||||||
|
|
||||||
|
if (filterCacheKey != null) { |
||||||
|
if (value == null) { |
||||||
|
value = _nullValue; |
||||||
|
} |
||||||
|
|
||||||
|
_values.put(filterCacheKey, value); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
if (value instanceof String) { |
||||||
|
return (String)value; |
||||||
|
} |
||||||
|
|
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String[] getArray(String key) { |
||||||
|
String cacheKey = _ARRAY_KEY_PREFIX.concat(key); |
||||||
|
|
||||||
|
Object value = _values.get(cacheKey); |
||||||
|
|
||||||
|
if (value == null) { |
||||||
|
ComponentProperties componentProperties = getComponentProperties(); |
||||||
|
|
||||||
|
String[] array = componentProperties.getStringArray(key); |
||||||
|
|
||||||
|
value = fixArrayValue(cacheKey, array); |
||||||
|
} |
||||||
|
|
||||||
|
if (value instanceof String[]) { |
||||||
|
return (String[])value; |
||||||
|
} |
||||||
|
|
||||||
|
return _emptyArray; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String[] getArray(String key, Filter filter) { |
||||||
|
String filterCacheKey = buildFilterCacheKey(key, filter, true); |
||||||
|
|
||||||
|
Object value = null; |
||||||
|
|
||||||
|
if (filterCacheKey != null) { |
||||||
|
value = _values.get(filterCacheKey); |
||||||
|
} |
||||||
|
|
||||||
|
if (value == null) { |
||||||
|
ComponentProperties componentProperties = getComponentProperties(); |
||||||
|
|
||||||
|
String[] array = componentProperties.getStringArray( |
||||||
|
key, getEasyConfFilter(filter)); |
||||||
|
|
||||||
|
value = fixArrayValue(filterCacheKey, array); |
||||||
|
} |
||||||
|
|
||||||
|
if (value instanceof String[]) { |
||||||
|
return (String[])value; |
||||||
|
} |
||||||
|
|
||||||
|
return _emptyArray; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Properties getProperties() { |
||||||
|
|
||||||
|
// For some strange reason, componentProperties.getProperties() returns
|
||||||
|
// values with spaces after commas. So a property setting of "xyz=1,2,3"
|
||||||
|
// actually returns "xyz=1, 2, 3". This can break applications that
|
||||||
|
// don't expect that extra space. However, getting the property value
|
||||||
|
// directly through componentProperties returns the correct value. This
|
||||||
|
// method fixes the weird behavior by returning properties with the
|
||||||
|
// correct values.
|
||||||
|
|
||||||
|
Properties properties = new Properties(); |
||||||
|
|
||||||
|
ComponentProperties componentProperties = getComponentProperties(); |
||||||
|
|
||||||
|
Properties componentPropertiesProperties = |
||||||
|
componentProperties.getProperties(); |
||||||
|
|
||||||
|
for (String key : componentPropertiesProperties.stringPropertyNames()) { |
||||||
|
properties.setProperty(key, componentProperties.getString(key)); |
||||||
|
} |
||||||
|
|
||||||
|
return properties; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Properties getProperties(String prefix, boolean removePrefix) { |
||||||
|
Properties properties = getProperties(); |
||||||
|
|
||||||
|
return PropertiesUtil.getProperties(properties, prefix, removePrefix); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void removeProperties(Properties properties) { |
||||||
|
try { |
||||||
|
ComponentProperties componentProperties = |
||||||
|
_componentConfiguration.getProperties(); |
||||||
|
|
||||||
|
ClassLoaderAggregateProperties classLoaderAggregateProperties = |
||||||
|
(ClassLoaderAggregateProperties) |
||||||
|
componentProperties.toConfiguration(); |
||||||
|
|
||||||
|
CompositeConfiguration compositeConfiguration = |
||||||
|
classLoaderAggregateProperties.getBaseConfiguration(); |
||||||
|
|
||||||
|
Field field2 = CompositeConfiguration.class.getDeclaredField( |
||||||
|
"configList"); |
||||||
|
|
||||||
|
field2.setAccessible(true); |
||||||
|
|
||||||
|
@SuppressWarnings("unchecked") |
||||||
|
List<Configuration> configurations = |
||||||
|
(List<Configuration>)field2.get(compositeConfiguration); |
||||||
|
|
||||||
|
Iterator<Configuration> itr = configurations.iterator(); |
||||||
|
|
||||||
|
while (itr.hasNext()) { |
||||||
|
Configuration configuration = itr.next(); |
||||||
|
|
||||||
|
if (!(configuration instanceof MapConfiguration)) { |
||||||
|
break; |
||||||
|
} |
||||||
|
|
||||||
|
MapConfiguration mapConfiguration = |
||||||
|
(MapConfiguration)configuration; |
||||||
|
|
||||||
|
if (mapConfiguration.getMap() == properties) { |
||||||
|
itr.remove(); |
||||||
|
|
||||||
|
classLoaderAggregateProperties.removeConfiguration( |
||||||
|
configuration); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
clearCache(); |
||||||
|
} |
||||||
|
catch (Exception e) { |
||||||
|
_log.error("The properties could not be removed", e); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void set(String key, String value) { |
||||||
|
ComponentProperties componentProperties = getComponentProperties(); |
||||||
|
|
||||||
|
componentProperties.setProperty(key, value); |
||||||
|
|
||||||
|
_values.put(key, value); |
||||||
|
} |
||||||
|
|
||||||
|
protected String buildFilterCacheKey( |
||||||
|
String key, Filter filter, boolean arrayValue) { |
||||||
|
|
||||||
|
if (filter.getVariables() != null) { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
String[] selectors = filter.getSelectors(); |
||||||
|
|
||||||
|
int length = 0; |
||||||
|
|
||||||
|
if (arrayValue) { |
||||||
|
length = selectors.length + 2; |
||||||
|
} |
||||||
|
else { |
||||||
|
length = selectors.length + 1; |
||||||
|
} |
||||||
|
|
||||||
|
StringBundler sb = new StringBundler(length); |
||||||
|
|
||||||
|
if (arrayValue) { |
||||||
|
sb.append(_ARRAY_KEY_PREFIX); |
||||||
|
} |
||||||
|
|
||||||
|
sb.append(key); |
||||||
|
sb.append(selectors); |
||||||
|
|
||||||
|
return sb.toString(); |
||||||
|
} |
||||||
|
|
||||||
|
protected Object fixArrayValue(String cacheKey, String[] array) { |
||||||
|
if (cacheKey == null) { |
||||||
|
return array; |
||||||
|
} |
||||||
|
|
||||||
|
Object value = _nullValue; |
||||||
|
|
||||||
|
if (ArrayUtil.isNotEmpty(array)) { |
||||||
|
|
||||||
|
// Commons Configuration parses an empty property into a String
|
||||||
|
// array with one String containing one space. It also leaves a
|
||||||
|
// trailing array member if you set a property in more than one
|
||||||
|
// line.
|
||||||
|
|
||||||
|
if (Validator.isNull(array[array.length - 1])) { |
||||||
|
String[] subArray = new String[array.length - 1]; |
||||||
|
|
||||||
|
System.arraycopy(array, 0, subArray, 0, subArray.length); |
||||||
|
|
||||||
|
array = subArray; |
||||||
|
} |
||||||
|
|
||||||
|
if (array.length > 0) { |
||||||
|
value = array; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
_values.put(cacheKey, value); |
||||||
|
|
||||||
|
return value; |
||||||
|
} |
||||||
|
|
||||||
|
protected ComponentProperties getComponentProperties() { |
||||||
|
return _componentConfiguration.getProperties(); |
||||||
|
} |
||||||
|
|
||||||
|
protected com.germinus.easyconf.Filter getEasyConfFilter(Filter filter) { |
||||||
|
com.germinus.easyconf.Filter easyConfFilter = |
||||||
|
com.germinus.easyconf.Filter.by(filter.getSelectors()); |
||||||
|
|
||||||
|
if (filter.getVariables() != null) { |
||||||
|
easyConfFilter.setVariables(filter.getVariables()); |
||||||
|
} |
||||||
|
|
||||||
|
return easyConfFilter; |
||||||
|
} |
||||||
|
|
||||||
|
protected void printSources(long companyId, String webId) { |
||||||
|
ComponentProperties componentProperties = getComponentProperties(); |
||||||
|
|
||||||
|
List<String> sources = componentProperties.getLoadedSources(); |
||||||
|
|
||||||
|
for (int i = sources.size() - 1; i >= 0; i--) { |
||||||
|
String source = sources.get(i); |
||||||
|
|
||||||
|
if (_printedSources.contains(source)) { |
||||||
|
continue; |
||||||
|
} |
||||||
|
|
||||||
|
_printedSources.add(source); |
||||||
|
|
||||||
|
String info = "Loading " + source; |
||||||
|
|
||||||
|
if (companyId > CompanyConstants.SYSTEM) { |
||||||
|
info += |
||||||
|
" for {companyId=" + companyId + ", webId=" + webId + "}"; |
||||||
|
} |
||||||
|
|
||||||
|
System.out.println(info); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private static final String _ARRAY_KEY_PREFIX = "ARRAY_"; |
||||||
|
|
||||||
|
private static final boolean _PRINT_DUPLICATE_CALLS_TO_GET = false; |
||||||
|
|
||||||
|
private static Log _log = LogFactoryUtil.getLog(ConfigurationImpl.class); |
||||||
|
|
||||||
|
private static String[] _emptyArray = new String[0]; |
||||||
|
private static Object _nullValue = new Object(); |
||||||
|
|
||||||
|
private ComponentConfiguration _componentConfiguration; |
||||||
|
private Set<String> _printedSources = new HashSet<String>(); |
||||||
|
private Map<String, Object> _values = |
||||||
|
new ConcurrentHashMap<String, Object>(); |
||||||
|
|
||||||
|
} |
@ -0,0 +1,383 @@ |
|||||||
|
/** |
||||||
|
* Copyright (c) 2000-2013 Liferay, Inc. All rights reserved. |
||||||
|
* |
||||||
|
* This library 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 2.1 of the License, or (at your option) |
||||||
|
* any later version. |
||||||
|
* |
||||||
|
* This library 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. |
||||||
|
*/ |
||||||
|
|
||||||
|
package com.liferay.portal.configuration.easyconf; |
||||||
|
|
||||||
|
import com.germinus.easyconf.AggregatedProperties; |
||||||
|
import com.germinus.easyconf.ConfigurationException; |
||||||
|
import com.germinus.easyconf.Conventions; |
||||||
|
import com.germinus.easyconf.DatasourceURL; |
||||||
|
import com.germinus.easyconf.FileConfigurationChangedReloadingStrategy; |
||||||
|
import com.germinus.easyconf.JndiURL; |
||||||
|
|
||||||
|
import com.liferay.portal.kernel.log.Log; |
||||||
|
import com.liferay.portal.kernel.log.LogFactoryUtil; |
||||||
|
import com.liferay.portal.kernel.util.ArrayUtil; |
||||||
|
|
||||||
|
import java.net.URL; |
||||||
|
|
||||||
|
import java.util.ArrayList; |
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
import org.apache.commons.configuration.AbstractFileConfiguration; |
||||||
|
import org.apache.commons.configuration.CompositeConfiguration; |
||||||
|
import org.apache.commons.configuration.Configuration; |
||||||
|
import org.apache.commons.configuration.FileConfiguration; |
||||||
|
import org.apache.commons.configuration.PropertiesConfiguration; |
||||||
|
import org.apache.commons.configuration.SubsetConfiguration; |
||||||
|
import org.apache.commons.configuration.SystemConfiguration; |
||||||
|
import org.apache.commons.configuration.reloading.FileChangedReloadingStrategy; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author Raymond Augé |
||||||
|
*/ |
||||||
|
public class ClassLoaderAggregateProperties extends AggregatedProperties { |
||||||
|
|
||||||
|
public ClassLoaderAggregateProperties( |
||||||
|
ClassLoader classLoader, String companyId, String componentName) { |
||||||
|
|
||||||
|
super(companyId, componentName); |
||||||
|
|
||||||
|
_classLoader = classLoader; |
||||||
|
_companyId = companyId; |
||||||
|
_componentName = componentName; |
||||||
|
|
||||||
|
_prefixedSystemConfiguration = new SubsetConfiguration( |
||||||
|
_systemConfiguration, _getPrefix(), null); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void addBaseFileName(String fileName) { |
||||||
|
URL url = _classLoader.getResource(fileName); |
||||||
|
|
||||||
|
Configuration configuration = _addPropertiesSource( |
||||||
|
fileName, url, _baseCompositeConfiguration); |
||||||
|
|
||||||
|
if ((configuration != null) && !configuration.isEmpty()) { |
||||||
|
_baseConfigurationLoaded = true; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void addGlobalFileName(String fileName) { |
||||||
|
URL url = _classLoader.getResource(fileName); |
||||||
|
|
||||||
|
_addPropertiesSource(fileName, url, _globalCompositeConfiguration); |
||||||
|
} |
||||||
|
|
||||||
|
public CompositeConfiguration getBaseConfiguration() { |
||||||
|
return _baseCompositeConfiguration; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getComponentName() { |
||||||
|
return _componentName; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Object getProperty(String key) { |
||||||
|
Object value = null; |
||||||
|
|
||||||
|
if (value == null) { |
||||||
|
value = System.getProperty(_getPrefix().concat(key)); |
||||||
|
} |
||||||
|
|
||||||
|
if (value == null) { |
||||||
|
value = _globalCompositeConfiguration.getProperty( |
||||||
|
_getPrefix().concat(key)); |
||||||
|
} |
||||||
|
|
||||||
|
if (value == null) { |
||||||
|
value = _globalCompositeConfiguration.getProperty(key); |
||||||
|
} |
||||||
|
|
||||||
|
if (value == null) { |
||||||
|
value = _baseCompositeConfiguration.getProperty(key); |
||||||
|
} |
||||||
|
|
||||||
|
if (value == null) { |
||||||
|
value = super.getProperty(key); |
||||||
|
} |
||||||
|
|
||||||
|
if (value == null) { |
||||||
|
value = System.getProperty(key); |
||||||
|
} |
||||||
|
|
||||||
|
if ((value == null) && key.equals(Conventions.COMPANY_ID_PROPERTY)) { |
||||||
|
value = _companyId; |
||||||
|
} |
||||||
|
|
||||||
|
if ((value == null) && |
||||||
|
key.equals(Conventions.COMPONENT_NAME_PROPERTY)) { |
||||||
|
|
||||||
|
value = _componentName; |
||||||
|
} |
||||||
|
|
||||||
|
return value; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean hasBaseConfiguration() { |
||||||
|
return _baseConfigurationLoaded; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public List<String> loadedSources() { |
||||||
|
return _loadedSources; |
||||||
|
} |
||||||
|
|
||||||
|
private Configuration _addDatasourceProperties(String datasourcePath) { |
||||||
|
DatasourceURL datasourceURL = new DatasourceURL( |
||||||
|
datasourcePath, _companyId, _componentName, |
||||||
|
DatasourceURL.PROPERTIES_TABLE); |
||||||
|
|
||||||
|
return datasourceURL.getConfiguration(); |
||||||
|
} |
||||||
|
|
||||||
|
private Configuration _addFileProperties( |
||||||
|
String fileName, |
||||||
|
CompositeConfiguration loadedCompositeConfiguration) |
||||||
|
throws ConfigurationException { |
||||||
|
|
||||||
|
try { |
||||||
|
FileConfiguration newFileConfiguration = |
||||||
|
new PropertiesConfiguration(fileName); |
||||||
|
|
||||||
|
URL url = newFileConfiguration.getURL(); |
||||||
|
|
||||||
|
if (_log.isDebugEnabled()) { |
||||||
|
_log.debug("Adding file " + url); |
||||||
|
} |
||||||
|
|
||||||
|
Long delay = _getReloadDelay( |
||||||
|
loadedCompositeConfiguration, newFileConfiguration); |
||||||
|
|
||||||
|
if (delay != null) { |
||||||
|
FileChangedReloadingStrategy fileChangedReloadingStrategy = |
||||||
|
new FileConfigurationChangedReloadingStrategy(); |
||||||
|
|
||||||
|
if (_log.isDebugEnabled()) { |
||||||
|
_log.debug( |
||||||
|
"File " + url + " will be reloaded every " + |
||||||
|
delay + " seconds"); |
||||||
|
} |
||||||
|
|
||||||
|
long milliseconds = delay.longValue() * 1000; |
||||||
|
|
||||||
|
fileChangedReloadingStrategy.setRefreshDelay(milliseconds); |
||||||
|
|
||||||
|
newFileConfiguration.setReloadingStrategy( |
||||||
|
fileChangedReloadingStrategy); |
||||||
|
} |
||||||
|
|
||||||
|
_addIncludedPropertiesSources( |
||||||
|
newFileConfiguration, loadedCompositeConfiguration); |
||||||
|
|
||||||
|
return newFileConfiguration; |
||||||
|
} |
||||||
|
catch (org.apache.commons.configuration.ConfigurationException ce) { |
||||||
|
if (_log.isDebugEnabled()) { |
||||||
|
_log.debug("Configuration source " + fileName + " ignored"); |
||||||
|
} |
||||||
|
|
||||||
|
return null; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private void _addIncludedPropertiesSources( |
||||||
|
Configuration newConfiguration, |
||||||
|
CompositeConfiguration loadedCompositeConfiguration) { |
||||||
|
|
||||||
|
CompositeConfiguration tempCompositeConfiguration = |
||||||
|
new CompositeConfiguration(); |
||||||
|
|
||||||
|
tempCompositeConfiguration.addConfiguration( |
||||||
|
_prefixedSystemConfiguration); |
||||||
|
tempCompositeConfiguration.addConfiguration(newConfiguration); |
||||||
|
tempCompositeConfiguration.addConfiguration(_systemConfiguration); |
||||||
|
tempCompositeConfiguration.addProperty( |
||||||
|
Conventions.COMPANY_ID_PROPERTY, _companyId); |
||||||
|
tempCompositeConfiguration.addProperty( |
||||||
|
Conventions.COMPONENT_NAME_PROPERTY, _componentName); |
||||||
|
|
||||||
|
String[] fileNames = tempCompositeConfiguration.getStringArray( |
||||||
|
Conventions.INCLUDE_PROPERTY); |
||||||
|
|
||||||
|
ArrayUtil.reverse(fileNames); |
||||||
|
|
||||||
|
for (String fileName : fileNames) { |
||||||
|
URL url = null; |
||||||
|
|
||||||
|
try { |
||||||
|
url = _classLoader.getResource(fileName); |
||||||
|
} |
||||||
|
catch (RuntimeException re) { |
||||||
|
if (fileName.startsWith("file:/")) { |
||||||
|
throw re; |
||||||
|
} |
||||||
|
|
||||||
|
fileName = "file:/".concat(fileName); |
||||||
|
|
||||||
|
url = _classLoader.getResource(fileName); |
||||||
|
} |
||||||
|
|
||||||
|
_addPropertiesSource(fileName, url, loadedCompositeConfiguration); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private Configuration _addJNDIProperties(String sourcePath) { |
||||||
|
JndiURL jndiURL = new JndiURL(sourcePath, _companyId, _componentName); |
||||||
|
|
||||||
|
return jndiURL.getConfiguration(); |
||||||
|
} |
||||||
|
|
||||||
|
private Configuration _addPropertiesSource( |
||||||
|
String sourceName, URL url, |
||||||
|
CompositeConfiguration loadedCompositeConfiguration) { |
||||||
|
|
||||||
|
try { |
||||||
|
Configuration newConfiguration = null; |
||||||
|
|
||||||
|
if (DatasourceURL.isDatasource(sourceName)) { |
||||||
|
newConfiguration = _addDatasourceProperties(sourceName); |
||||||
|
} |
||||||
|
else if (JndiURL.isJndi(sourceName)) { |
||||||
|
newConfiguration = _addJNDIProperties(sourceName); |
||||||
|
} |
||||||
|
else if (url != null) { |
||||||
|
newConfiguration = _addURLProperties( |
||||||
|
url, loadedCompositeConfiguration); |
||||||
|
} |
||||||
|
else { |
||||||
|
newConfiguration = _addFileProperties( |
||||||
|
sourceName, loadedCompositeConfiguration); |
||||||
|
} |
||||||
|
|
||||||
|
if (newConfiguration == null) { |
||||||
|
return newConfiguration; |
||||||
|
} |
||||||
|
|
||||||
|
loadedCompositeConfiguration.addConfiguration(newConfiguration); |
||||||
|
|
||||||
|
super.addConfiguration(newConfiguration); |
||||||
|
|
||||||
|
if (newConfiguration instanceof AbstractFileConfiguration) { |
||||||
|
AbstractFileConfiguration abstractFileConfiguration = |
||||||
|
(AbstractFileConfiguration)newConfiguration; |
||||||
|
|
||||||
|
URL abstractFileConfigurationURL = |
||||||
|
abstractFileConfiguration.getURL(); |
||||||
|
|
||||||
|
_loadedSources.add(abstractFileConfigurationURL.toString()); |
||||||
|
} |
||||||
|
else { |
||||||
|
_loadedSources.add(sourceName); |
||||||
|
} |
||||||
|
|
||||||
|
return newConfiguration; |
||||||
|
} |
||||||
|
catch (Exception e) { |
||||||
|
if (_log.isDebugEnabled()) { |
||||||
|
_log.debug( |
||||||
|
"Configuration source " + sourceName + " ignored: " + |
||||||
|
e.getMessage()); |
||||||
|
} |
||||||
|
|
||||||
|
return null; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private Configuration _addURLProperties( |
||||||
|
URL url, CompositeConfiguration loadedCompositeConfiguration) |
||||||
|
throws ConfigurationException { |
||||||
|
|
||||||
|
try { |
||||||
|
FileConfiguration newFileConfiguration = |
||||||
|
new PropertiesConfiguration(url); |
||||||
|
|
||||||
|
if (_log.isDebugEnabled()) { |
||||||
|
_log.debug("Adding resource " + url); |
||||||
|
} |
||||||
|
|
||||||
|
Long delay = _getReloadDelay( |
||||||
|
loadedCompositeConfiguration, newFileConfiguration); |
||||||
|
|
||||||
|
if (delay != null) { |
||||||
|
FileChangedReloadingStrategy fileChangedReloadingStrategy = |
||||||
|
new FileConfigurationChangedReloadingStrategy(); |
||||||
|
|
||||||
|
if (_log.isDebugEnabled()) { |
||||||
|
_log.debug( |
||||||
|
"Resource " + url + " will be reloaded every " + |
||||||
|
delay + " seconds"); |
||||||
|
} |
||||||
|
|
||||||
|
long milliseconds = delay.longValue() * 1000; |
||||||
|
|
||||||
|
fileChangedReloadingStrategy.setRefreshDelay(milliseconds); |
||||||
|
|
||||||
|
newFileConfiguration.setReloadingStrategy( |
||||||
|
fileChangedReloadingStrategy); |
||||||
|
} |
||||||
|
|
||||||
|
_addIncludedPropertiesSources( |
||||||
|
newFileConfiguration, loadedCompositeConfiguration); |
||||||
|
|
||||||
|
return newFileConfiguration; |
||||||
|
} |
||||||
|
catch (org.apache.commons.configuration.ConfigurationException ce) { |
||||||
|
if (_log.isDebugEnabled()) { |
||||||
|
_log.debug("Configuration source " + url + " ignored"); |
||||||
|
} |
||||||
|
|
||||||
|
return null; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private String _getPrefix() { |
||||||
|
return _componentName.concat(Conventions.PREFIX_SEPARATOR); |
||||||
|
} |
||||||
|
|
||||||
|
private Long _getReloadDelay( |
||||||
|
CompositeConfiguration loadedCompositeConfiguration, |
||||||
|
FileConfiguration newFileConfiguration) { |
||||||
|
|
||||||
|
Long delay = newFileConfiguration.getLong( |
||||||
|
Conventions.RELOAD_DELAY_PROPERTY, null); |
||||||
|
|
||||||
|
if (delay == null) { |
||||||
|
delay = loadedCompositeConfiguration.getLong( |
||||||
|
Conventions.RELOAD_DELAY_PROPERTY, null); |
||||||
|
} |
||||||
|
|
||||||
|
return delay; |
||||||
|
} |
||||||
|
|
||||||
|
private static Log _log = LogFactoryUtil.getLog( |
||||||
|
ClassLoaderAggregateProperties.class); |
||||||
|
|
||||||
|
private CompositeConfiguration _baseCompositeConfiguration = |
||||||
|
new CompositeConfiguration(); |
||||||
|
private boolean _baseConfigurationLoaded; |
||||||
|
private ClassLoader _classLoader; |
||||||
|
private String _companyId; |
||||||
|
private String _componentName; |
||||||
|
private CompositeConfiguration _globalCompositeConfiguration = |
||||||
|
new CompositeConfiguration(); |
||||||
|
private List<String> _loadedSources = new ArrayList<String>(); |
||||||
|
private Configuration _prefixedSystemConfiguration; |
||||||
|
private SystemConfiguration _systemConfiguration = |
||||||
|
new SystemConfiguration(); |
||||||
|
|
||||||
|
} |
@ -0,0 +1,161 @@ |
|||||||
|
/** |
||||||
|
* Copyright (c) 2000-2013 Liferay, Inc. All rights reserved. |
||||||
|
* |
||||||
|
* This library 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 2.1 of the License, or (at your option) |
||||||
|
* any later version. |
||||||
|
* |
||||||
|
* This library 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. |
||||||
|
*/ |
||||||
|
|
||||||
|
package com.liferay.portal.configuration.easyconf; |
||||||
|
|
||||||
|
import com.germinus.easyconf.AggregatedProperties; |
||||||
|
import com.germinus.easyconf.ComponentConfiguration; |
||||||
|
import com.germinus.easyconf.ComponentProperties; |
||||||
|
import com.germinus.easyconf.ConfigurationNotFoundException; |
||||||
|
import com.germinus.easyconf.Conventions; |
||||||
|
|
||||||
|
import com.liferay.portal.kernel.log.Log; |
||||||
|
import com.liferay.portal.kernel.log.LogFactoryUtil; |
||||||
|
import com.liferay.portal.kernel.util.SystemProperties; |
||||||
|
|
||||||
|
import java.lang.reflect.Constructor; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author Raymond Augé |
||||||
|
*/ |
||||||
|
public class ClassLoaderComponentConfiguration extends ComponentConfiguration { |
||||||
|
|
||||||
|
public ClassLoaderComponentConfiguration( |
||||||
|
ClassLoader classLoader, String companyId, String componentName) { |
||||||
|
|
||||||
|
super(companyId, componentName); |
||||||
|
|
||||||
|
_classLoader = classLoader; |
||||||
|
_companyId = companyId; |
||||||
|
_componentName = componentName; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean equals(Object obj) { |
||||||
|
if (this == obj) { |
||||||
|
return true; |
||||||
|
} |
||||||
|
|
||||||
|
if (!(obj instanceof ComponentConfiguration)) { |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
ComponentConfiguration componentConfiguration = |
||||||
|
(ComponentConfiguration)obj; |
||||||
|
|
||||||
|
return _componentName.equals(componentConfiguration.getComponentName()); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getComponentName() { |
||||||
|
return _componentName; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Object getConfigurationObject() { |
||||||
|
throw new UnsupportedOperationException(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Object getConfigurationObject(String configurationName) { |
||||||
|
throw new UnsupportedOperationException(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public ComponentProperties getProperties() { |
||||||
|
ComponentProperties componentProperties = _getAvailableProperties(); |
||||||
|
|
||||||
|
if (!componentProperties.hasBaseConfiguration()) { |
||||||
|
throw new ConfigurationNotFoundException( |
||||||
|
_componentName, "The base properties file was not found"); |
||||||
|
} |
||||||
|
|
||||||
|
return componentProperties; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public int hashCode() { |
||||||
|
return _componentName.hashCode(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void saveConfigurationObject(Object configurationObject) { |
||||||
|
throw new UnsupportedOperationException(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void saveConfigurationObject( |
||||||
|
String confName, Object configurationObject) { |
||||||
|
|
||||||
|
throw new UnsupportedOperationException(); |
||||||
|
} |
||||||
|
|
||||||
|
private ComponentProperties _getAvailableProperties() { |
||||||
|
if (_properties != null) { |
||||||
|
return _properties; |
||||||
|
} |
||||||
|
|
||||||
|
SystemProperties.set("base.path", "."); |
||||||
|
|
||||||
|
ClassLoaderAggregateProperties classLoaderAggregateProperties = |
||||||
|
new ClassLoaderAggregateProperties( |
||||||
|
_classLoader, _companyId, _componentName); |
||||||
|
|
||||||
|
classLoaderAggregateProperties.addGlobalFileName( |
||||||
|
Conventions.GLOBAL_CONFIGURATION_FILE + |
||||||
|
Conventions.PROPERTIES_EXTENSION); |
||||||
|
|
||||||
|
classLoaderAggregateProperties.addBaseFileName( |
||||||
|
_componentName + Conventions.PROPERTIES_EXTENSION); |
||||||
|
|
||||||
|
if (_log.isInfoEnabled()) { |
||||||
|
_log.info( |
||||||
|
"Properties for " + _componentName + " loaded from " + |
||||||
|
classLoaderAggregateProperties.loadedSources()); |
||||||
|
} |
||||||
|
|
||||||
|
try { |
||||||
|
_properties = _constructor.newInstance( |
||||||
|
new Object[] {classLoaderAggregateProperties}); |
||||||
|
} |
||||||
|
catch (Exception e) { |
||||||
|
_log.error(e, e); |
||||||
|
} |
||||||
|
|
||||||
|
return _properties; |
||||||
|
} |
||||||
|
|
||||||
|
private static Log _log = LogFactoryUtil.getLog( |
||||||
|
ClassLoaderComponentConfiguration.class); |
||||||
|
|
||||||
|
private static Constructor<ComponentProperties> _constructor; |
||||||
|
|
||||||
|
static { |
||||||
|
try { |
||||||
|
_constructor = ComponentProperties.class.getDeclaredConstructor( |
||||||
|
AggregatedProperties.class); |
||||||
|
|
||||||
|
_constructor.setAccessible(true); |
||||||
|
} |
||||||
|
catch (Exception e) { |
||||||
|
_log.error(e, e); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private ClassLoader _classLoader; |
||||||
|
private String _companyId; |
||||||
|
private String _componentName; |
||||||
|
private ComponentProperties _properties; |
||||||
|
|
||||||
|
} |
@ -0,0 +1,253 @@ |
|||||||
|
/** |
||||||
|
* Copyright (c) 2000-2013 Liferay, Inc. All rights reserved. |
||||||
|
* |
||||||
|
* This library 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 2.1 of the License, or (at your option) |
||||||
|
* any later version. |
||||||
|
* |
||||||
|
* This library 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. |
||||||
|
*/ |
||||||
|
|
||||||
|
package com.liferay.portal.image; |
||||||
|
|
||||||
|
import com.liferay.portal.kernel.configuration.Filter; |
||||||
|
import com.liferay.portal.kernel.image.ImageMagick; |
||||||
|
import com.liferay.portal.kernel.log.Log; |
||||||
|
import com.liferay.portal.kernel.log.LogFactoryUtil; |
||||||
|
import com.liferay.portal.kernel.security.pacl.DoPrivileged; |
||||||
|
import com.liferay.portal.kernel.util.NamedThreadFactory; |
||||||
|
import com.liferay.portal.kernel.util.OSDetector; |
||||||
|
import com.liferay.portal.kernel.util.PropsKeys; |
||||||
|
import com.liferay.portal.kernel.util.StringBundler; |
||||||
|
import com.liferay.portal.kernel.util.Validator; |
||||||
|
import com.liferay.portal.util.ClassLoaderUtil; |
||||||
|
import com.liferay.portal.util.PrefsPropsUtil; |
||||||
|
import com.liferay.portal.util.PropsUtil; |
||||||
|
|
||||||
|
import java.util.LinkedList; |
||||||
|
import java.util.List; |
||||||
|
import java.util.Properties; |
||||||
|
import java.util.concurrent.Future; |
||||||
|
|
||||||
|
import javax.portlet.PortletPreferences; |
||||||
|
|
||||||
|
import org.im4java.process.ArrayListOutputConsumer; |
||||||
|
import org.im4java.process.ProcessExecutor; |
||||||
|
import org.im4java.process.ProcessTask; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author Alexander Chow |
||||||
|
* @author Ivica Cardic |
||||||
|
*/ |
||||||
|
@DoPrivileged |
||||||
|
public class ImageMagickImpl implements ImageMagick { |
||||||
|
|
||||||
|
public static ImageMagickImpl getInstance() { |
||||||
|
return _instance; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Future<?> convert(List<String> arguments) throws Exception { |
||||||
|
if (!isEnabled()) { |
||||||
|
throw new IllegalStateException( |
||||||
|
"Cannot call \"convert\" when ImageMagick is disabled"); |
||||||
|
} |
||||||
|
|
||||||
|
ProcessExecutor processExecutor = _getProcessExecutor(); |
||||||
|
|
||||||
|
LiferayConvertCmd liferayConvertCmd = new LiferayConvertCmd(); |
||||||
|
|
||||||
|
ProcessTask processTask = liferayConvertCmd.getProcessTask( |
||||||
|
_globalSearchPath, getResourceLimits(), arguments); |
||||||
|
|
||||||
|
processExecutor.execute(processTask); |
||||||
|
|
||||||
|
return processTask; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void destroy() { |
||||||
|
if (_processExecutor == null) { |
||||||
|
return; |
||||||
|
} |
||||||
|
|
||||||
|
synchronized (ProcessExecutor.class) { |
||||||
|
_processExecutor.shutdownNow(); |
||||||
|
} |
||||||
|
|
||||||
|
_processExecutor = null; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getGlobalSearchPath() throws Exception { |
||||||
|
PortletPreferences preferences = PrefsPropsUtil.getPreferences(true); |
||||||
|
|
||||||
|
String globalSearchPath = preferences.getValue( |
||||||
|
PropsKeys.IMAGEMAGICK_GLOBAL_SEARCH_PATH, null); |
||||||
|
|
||||||
|
if (Validator.isNotNull(globalSearchPath)) { |
||||||
|
return globalSearchPath; |
||||||
|
} |
||||||
|
|
||||||
|
String filterName = null; |
||||||
|
|
||||||
|
if (OSDetector.isApple()) { |
||||||
|
filterName = "apple"; |
||||||
|
} |
||||||
|
else if (OSDetector.isWindows()) { |
||||||
|
filterName = "windows"; |
||||||
|
} |
||||||
|
else { |
||||||
|
filterName = "unix"; |
||||||
|
} |
||||||
|
|
||||||
|
return PropsUtil.get( |
||||||
|
PropsKeys.IMAGEMAGICK_GLOBAL_SEARCH_PATH, new Filter(filterName)); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Properties getResourceLimitsProperties() throws Exception { |
||||||
|
Properties resourceLimitsProperties = PrefsPropsUtil.getProperties( |
||||||
|
PropsKeys.IMAGEMAGICK_RESOURCE_LIMIT, true); |
||||||
|
|
||||||
|
if (resourceLimitsProperties.isEmpty()) { |
||||||
|
resourceLimitsProperties = PropsUtil.getProperties( |
||||||
|
PropsKeys.IMAGEMAGICK_RESOURCE_LIMIT, true); |
||||||
|
} |
||||||
|
|
||||||
|
return resourceLimitsProperties; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String[] identify(List<String> arguments) throws Exception { |
||||||
|
if (!isEnabled()) { |
||||||
|
throw new IllegalStateException( |
||||||
|
"Cannot call \"identify\" when ImageMagick is disabled"); |
||||||
|
} |
||||||
|
|
||||||
|
ProcessExecutor processExecutor = _getProcessExecutor(); |
||||||
|
|
||||||
|
LiferayIdentifyCmd liferayIdentifyCmd = new LiferayIdentifyCmd(); |
||||||
|
|
||||||
|
ArrayListOutputConsumer arrayListOutputConsumer = |
||||||
|
new ArrayListOutputConsumer(); |
||||||
|
|
||||||
|
liferayIdentifyCmd.setOutputConsumer(arrayListOutputConsumer); |
||||||
|
|
||||||
|
ProcessTask processTask = liferayIdentifyCmd.getProcessTask( |
||||||
|
_globalSearchPath, getResourceLimits(), arguments); |
||||||
|
|
||||||
|
processExecutor.execute(processTask); |
||||||
|
|
||||||
|
processTask.get(); |
||||||
|
|
||||||
|
List<String> output = arrayListOutputConsumer.getOutput(); |
||||||
|
|
||||||
|
if (output != null) { |
||||||
|
return output.toArray(new String[output.size()]); |
||||||
|
} |
||||||
|
|
||||||
|
return new String[0]; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean isEnabled() { |
||||||
|
boolean enabled = false; |
||||||
|
|
||||||
|
try { |
||||||
|
enabled = PrefsPropsUtil.getBoolean(PropsKeys.IMAGEMAGICK_ENABLED); |
||||||
|
} |
||||||
|
catch (Exception e) { |
||||||
|
if (_log.isWarnEnabled()) { |
||||||
|
_log.warn(e, e); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
if (!enabled && !_warned && _log.isWarnEnabled()) { |
||||||
|
StringBundler sb = new StringBundler(7); |
||||||
|
|
||||||
|
sb.append("Liferay is not configured to use ImageMagick and "); |
||||||
|
sb.append("Ghostscript. For better quality document and image "); |
||||||
|
sb.append("previews, install ImageMagick and Ghostscript. Enable "); |
||||||
|
sb.append("ImageMagick in portal-ext.properties or in the Server "); |
||||||
|
sb.append("Administration section of the Control Panel at: "); |
||||||
|
sb.append("http://<server>/group/control_panel/manage/-/server/"); |
||||||
|
sb.append("external-services"); |
||||||
|
|
||||||
|
_log.warn(sb.toString()); |
||||||
|
|
||||||
|
_warned = true; |
||||||
|
} |
||||||
|
|
||||||
|
return enabled; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void reset() { |
||||||
|
if (isEnabled()) { |
||||||
|
try { |
||||||
|
_globalSearchPath = getGlobalSearchPath(); |
||||||
|
|
||||||
|
_resourceLimitsProperties = getResourceLimitsProperties(); |
||||||
|
} |
||||||
|
catch (Exception e) { |
||||||
|
_log.error(e, e); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
protected LinkedList<String> getResourceLimits() { |
||||||
|
LinkedList<String> resourceLimits = new LinkedList<String>(); |
||||||
|
|
||||||
|
if (_resourceLimitsProperties == null) { |
||||||
|
return resourceLimits; |
||||||
|
} |
||||||
|
|
||||||
|
for (Object key : _resourceLimitsProperties.keySet()) { |
||||||
|
String value = (String)_resourceLimitsProperties.get(key); |
||||||
|
|
||||||
|
if (Validator.isNull(value)) { |
||||||
|
continue; |
||||||
|
} |
||||||
|
|
||||||
|
resourceLimits.add("-limit"); |
||||||
|
resourceLimits.add((String)key); |
||||||
|
resourceLimits.add(value); |
||||||
|
} |
||||||
|
|
||||||
|
return resourceLimits; |
||||||
|
} |
||||||
|
|
||||||
|
private ProcessExecutor _getProcessExecutor() { |
||||||
|
if (_processExecutor != null) { |
||||||
|
return _processExecutor; |
||||||
|
} |
||||||
|
|
||||||
|
synchronized (ProcessExecutor.class) { |
||||||
|
if (_processExecutor == null) { |
||||||
|
_processExecutor = new ProcessExecutor(); |
||||||
|
|
||||||
|
_processExecutor.setThreadFactory( |
||||||
|
new NamedThreadFactory( |
||||||
|
ImageMagickImpl.class.getName(), Thread.MIN_PRIORITY, |
||||||
|
ClassLoaderUtil.getPortalClassLoader())); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
return _processExecutor; |
||||||
|
} |
||||||
|
|
||||||
|
private static Log _log = LogFactoryUtil.getLog(ImageMagickImpl.class); |
||||||
|
|
||||||
|
private static ImageMagickImpl _instance = new ImageMagickImpl(); |
||||||
|
|
||||||
|
private String _globalSearchPath; |
||||||
|
private volatile ProcessExecutor _processExecutor; |
||||||
|
private Properties _resourceLimitsProperties; |
||||||
|
private boolean _warned; |
||||||
|
|
||||||
|
} |
@ -0,0 +1,710 @@ |
|||||||
|
/** |
||||||
|
* Copyright (c) 2000-2013 Liferay, Inc. All rights reserved. |
||||||
|
* |
||||||
|
* This library 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 2.1 of the License, or (at your option) |
||||||
|
* any later version. |
||||||
|
* |
||||||
|
* This library 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. |
||||||
|
*/ |
||||||
|
|
||||||
|
package com.liferay.portal.image; |
||||||
|
|
||||||
|
import com.liferay.portal.kernel.image.ImageBag; |
||||||
|
import com.liferay.portal.kernel.image.ImageMagick; |
||||||
|
import com.liferay.portal.kernel.image.ImageTool; |
||||||
|
import com.liferay.portal.kernel.io.unsync.UnsyncByteArrayInputStream; |
||||||
|
import com.liferay.portal.kernel.io.unsync.UnsyncByteArrayOutputStream; |
||||||
|
import com.liferay.portal.kernel.log.Log; |
||||||
|
import com.liferay.portal.kernel.log.LogFactoryUtil; |
||||||
|
import com.liferay.portal.kernel.security.pacl.DoPrivileged; |
||||||
|
import com.liferay.portal.kernel.util.ArrayUtil; |
||||||
|
import com.liferay.portal.kernel.util.JavaDetector; |
||||||
|
import com.liferay.portal.kernel.util.PropsKeys; |
||||||
|
import com.liferay.portal.kernel.util.StringUtil; |
||||||
|
import com.liferay.portal.model.Image; |
||||||
|
import com.liferay.portal.model.impl.ImageImpl; |
||||||
|
import com.liferay.portal.util.FileImpl; |
||||||
|
import com.liferay.portal.util.PropsUtil; |
||||||
|
import com.liferay.portal.util.PropsValues; |
||||||
|
|
||||||
|
import com.sun.media.jai.codec.ImageCodec; |
||||||
|
import com.sun.media.jai.codec.ImageDecoder; |
||||||
|
import com.sun.media.jai.codec.ImageEncoder; |
||||||
|
|
||||||
|
import java.awt.AlphaComposite; |
||||||
|
import java.awt.Graphics; |
||||||
|
import java.awt.Graphics2D; |
||||||
|
import java.awt.GraphicsConfiguration; |
||||||
|
import java.awt.image.BufferedImage; |
||||||
|
import java.awt.image.ColorModel; |
||||||
|
import java.awt.image.DataBuffer; |
||||||
|
import java.awt.image.IndexColorModel; |
||||||
|
import java.awt.image.RenderedImage; |
||||||
|
import java.awt.image.SampleModel; |
||||||
|
|
||||||
|
import java.io.File; |
||||||
|
import java.io.IOException; |
||||||
|
import java.io.InputStream; |
||||||
|
import java.io.OutputStream; |
||||||
|
|
||||||
|
import java.util.Arrays; |
||||||
|
import java.util.Enumeration; |
||||||
|
import java.util.concurrent.ExecutionException; |
||||||
|
import java.util.concurrent.Future; |
||||||
|
import java.util.concurrent.TimeUnit; |
||||||
|
import java.util.concurrent.TimeoutException; |
||||||
|
|
||||||
|
import javax.imageio.ImageIO; |
||||||
|
|
||||||
|
import javax.media.jai.RenderedImageAdapter; |
||||||
|
|
||||||
|
import net.jmge.gif.Gif89Encoder; |
||||||
|
|
||||||
|
import org.im4java.core.IMOperation; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author Brian Wing Shun Chan |
||||||
|
* @author Alexander Chow |
||||||
|
* @author Shuyang Zhou |
||||||
|
*/ |
||||||
|
@DoPrivileged |
||||||
|
public class ImageToolImpl implements ImageTool { |
||||||
|
|
||||||
|
public static ImageTool getInstance() { |
||||||
|
return _instance; |
||||||
|
} |
||||||
|
|
||||||
|
public void afterPropertiesSet() { |
||||||
|
ClassLoader classLoader = getClass().getClassLoader(); |
||||||
|
|
||||||
|
try { |
||||||
|
InputStream is = classLoader.getResourceAsStream( |
||||||
|
PropsUtil.get(PropsKeys.IMAGE_DEFAULT_SPACER)); |
||||||
|
|
||||||
|
if (is == null) { |
||||||
|
_log.error("Default spacer is not available"); |
||||||
|
} |
||||||
|
|
||||||
|
_defaultSpacer = getImage(is); |
||||||
|
} |
||||||
|
catch (Exception e) { |
||||||
|
_log.error( |
||||||
|
"Unable to configure the default spacer: " + e.getMessage()); |
||||||
|
} |
||||||
|
|
||||||
|
try { |
||||||
|
InputStream is = classLoader.getResourceAsStream( |
||||||
|
PropsUtil.get(PropsKeys.IMAGE_DEFAULT_COMPANY_LOGO)); |
||||||
|
|
||||||
|
if (is == null) { |
||||||
|
_log.error("Default company logo is not available"); |
||||||
|
} |
||||||
|
|
||||||
|
_defaultCompanyLogo = getImage(is); |
||||||
|
} |
||||||
|
catch (Exception e) { |
||||||
|
_log.error( |
||||||
|
"Unable to configure the default company logo: " + |
||||||
|
e.getMessage()); |
||||||
|
} |
||||||
|
|
||||||
|
try { |
||||||
|
InputStream is = classLoader.getResourceAsStream( |
||||||
|
PropsUtil.get(PropsKeys.IMAGE_DEFAULT_ORGANIZATION_LOGO)); |
||||||
|
|
||||||
|
if (is == null) { |
||||||
|
_log.error("Default organization logo is not available"); |
||||||
|
} |
||||||
|
|
||||||
|
_defaultOrganizationLogo = getImage(is); |
||||||
|
} |
||||||
|
catch (Exception e) { |
||||||
|
_log.error( |
||||||
|
"Unable to configure the default organization logo: " + |
||||||
|
e.getMessage()); |
||||||
|
} |
||||||
|
|
||||||
|
try { |
||||||
|
InputStream is = classLoader.getResourceAsStream( |
||||||
|
PropsUtil.get(PropsKeys.IMAGE_DEFAULT_USER_FEMALE_PORTRAIT)); |
||||||
|
|
||||||
|
if (is == null) { |
||||||
|
_log.error("Default user female portrait is not available"); |
||||||
|
} |
||||||
|
|
||||||
|
_defaultUserFemalePortrait = getImage(is); |
||||||
|
} |
||||||
|
catch (Exception e) { |
||||||
|
_log.error( |
||||||
|
"Unable to configure the default user female portrait: " + |
||||||
|
e.getMessage()); |
||||||
|
} |
||||||
|
|
||||||
|
try { |
||||||
|
InputStream is = classLoader.getResourceAsStream( |
||||||
|
PropsUtil.get(PropsKeys.IMAGE_DEFAULT_USER_MALE_PORTRAIT)); |
||||||
|
|
||||||
|
if (is == null) { |
||||||
|
_log.error("Default user male portrait is not available"); |
||||||
|
} |
||||||
|
|
||||||
|
_defaultUserMalePortrait = getImage(is); |
||||||
|
} |
||||||
|
catch (Exception e) { |
||||||
|
_log.error( |
||||||
|
"Unable to configure the default user male portrait: " + |
||||||
|
e.getMessage()); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Future<RenderedImage> convertCMYKtoRGB(byte[] bytes, String type) { |
||||||
|
ImageMagick imageMagick = getImageMagick(); |
||||||
|
|
||||||
|
if (!imageMagick.isEnabled()) { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
File inputFile = _fileUtil.createTempFile(type); |
||||||
|
File outputFile = _fileUtil.createTempFile(type); |
||||||
|
|
||||||
|
try { |
||||||
|
_fileUtil.write(inputFile, bytes); |
||||||
|
|
||||||
|
IMOperation imOperation = new IMOperation(); |
||||||
|
|
||||||
|
imOperation.addRawArgs("-format", "%[colorspace]"); |
||||||
|
imOperation.addImage(inputFile.getPath()); |
||||||
|
|
||||||
|
String[] output = imageMagick.identify(imOperation.getCmdArgs()); |
||||||
|
|
||||||
|
if ((output.length == 1) && |
||||||
|
StringUtil.equalsIgnoreCase(output[0], "CMYK")) { |
||||||
|
|
||||||
|
if (_log.isInfoEnabled()) { |
||||||
|
_log.info("The image is in the CMYK colorspace"); |
||||||
|
} |
||||||
|
|
||||||
|
imOperation = new IMOperation(); |
||||||
|
|
||||||
|
imOperation.addRawArgs("-colorspace", "RGB"); |
||||||
|
imOperation.addImage(inputFile.getPath()); |
||||||
|
imOperation.addImage(outputFile.getPath()); |
||||||
|
|
||||||
|
Future<?> future = imageMagick.convert( |
||||||
|
imOperation.getCmdArgs()); |
||||||
|
|
||||||
|
return new RenderedImageFuture(future, outputFile, type); |
||||||
|
} |
||||||
|
} |
||||||
|
catch (Exception e) { |
||||||
|
if (_log.isErrorEnabled()) { |
||||||
|
_log.error(e, e); |
||||||
|
} |
||||||
|
} |
||||||
|
finally { |
||||||
|
_fileUtil.delete(inputFile); |
||||||
|
_fileUtil.delete(outputFile); |
||||||
|
} |
||||||
|
|
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public BufferedImage convertImageType(BufferedImage sourceImage, int type) { |
||||||
|
BufferedImage targetImage = new BufferedImage( |
||||||
|
sourceImage.getWidth(), sourceImage.getHeight(), type); |
||||||
|
|
||||||
|
Graphics2D graphics = targetImage.createGraphics(); |
||||||
|
|
||||||
|
graphics.drawRenderedImage(sourceImage, null); |
||||||
|
|
||||||
|
graphics.dispose(); |
||||||
|
|
||||||
|
return targetImage; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void encodeGIF(RenderedImage renderedImage, OutputStream os) |
||||||
|
throws IOException { |
||||||
|
|
||||||
|
if (JavaDetector.isJDK6()) { |
||||||
|
ImageIO.write(renderedImage, TYPE_GIF, os); |
||||||
|
} |
||||||
|
else { |
||||||
|
BufferedImage bufferedImage = getBufferedImage(renderedImage); |
||||||
|
|
||||||
|
if (!(bufferedImage.getColorModel() instanceof IndexColorModel)) { |
||||||
|
bufferedImage = convertImageType( |
||||||
|
bufferedImage, BufferedImage.TYPE_BYTE_INDEXED); |
||||||
|
} |
||||||
|
|
||||||
|
Gif89Encoder encoder = new Gif89Encoder(bufferedImage); |
||||||
|
|
||||||
|
encoder.encode(os); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void encodeWBMP(RenderedImage renderedImage, OutputStream os) |
||||||
|
throws IOException { |
||||||
|
|
||||||
|
BufferedImage bufferedImage = getBufferedImage(renderedImage); |
||||||
|
|
||||||
|
SampleModel sampleModel = bufferedImage.getSampleModel(); |
||||||
|
|
||||||
|
int type = sampleModel.getDataType(); |
||||||
|
|
||||||
|
if ((bufferedImage.getType() != BufferedImage.TYPE_BYTE_BINARY) || |
||||||
|
(type < DataBuffer.TYPE_BYTE) || (type > DataBuffer.TYPE_INT) || |
||||||
|
(sampleModel.getNumBands() != 1) || |
||||||
|
(sampleModel.getSampleSize(0) != 1)) { |
||||||
|
|
||||||
|
BufferedImage binaryImage = new BufferedImage( |
||||||
|
bufferedImage.getWidth(), bufferedImage.getHeight(), |
||||||
|
BufferedImage.TYPE_BYTE_BINARY); |
||||||
|
|
||||||
|
Graphics graphics = binaryImage.getGraphics(); |
||||||
|
|
||||||
|
graphics.drawImage(bufferedImage, 0, 0, null); |
||||||
|
|
||||||
|
renderedImage = binaryImage; |
||||||
|
} |
||||||
|
|
||||||
|
if (!ImageIO.write(renderedImage, "wbmp", os)) { |
||||||
|
|
||||||
|
// See http://www.jguru.com/faq/view.jsp?EID=127723
|
||||||
|
|
||||||
|
os.write(0); |
||||||
|
os.write(0); |
||||||
|
os.write(toMultiByte(bufferedImage.getWidth())); |
||||||
|
os.write(toMultiByte(bufferedImage.getHeight())); |
||||||
|
|
||||||
|
DataBuffer dataBuffer = bufferedImage.getData().getDataBuffer(); |
||||||
|
|
||||||
|
int size = dataBuffer.getSize(); |
||||||
|
|
||||||
|
for (int i = 0; i < size; i++) { |
||||||
|
os.write((byte)dataBuffer.getElem(i)); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public BufferedImage getBufferedImage(RenderedImage renderedImage) { |
||||||
|
if (renderedImage instanceof BufferedImage) { |
||||||
|
return (BufferedImage)renderedImage; |
||||||
|
} |
||||||
|
|
||||||
|
RenderedImageAdapter adapter = new RenderedImageAdapter(renderedImage); |
||||||
|
|
||||||
|
return adapter.getAsBufferedImage(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public byte[] getBytes(RenderedImage renderedImage, String contentType) |
||||||
|
throws IOException { |
||||||
|
|
||||||
|
UnsyncByteArrayOutputStream baos = new UnsyncByteArrayOutputStream(); |
||||||
|
|
||||||
|
write(renderedImage, contentType, baos); |
||||||
|
|
||||||
|
return baos.toByteArray(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Image getDefaultCompanyLogo() { |
||||||
|
return _defaultCompanyLogo; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Image getDefaultOrganizationLogo() { |
||||||
|
return _defaultOrganizationLogo; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Image getDefaultSpacer() { |
||||||
|
return _defaultSpacer; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Image getDefaultUserFemalePortrait() { |
||||||
|
return _defaultUserFemalePortrait; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Image getDefaultUserMalePortrait() { |
||||||
|
return _defaultUserMalePortrait; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Image getImage(byte[] bytes) throws IOException { |
||||||
|
if (bytes == null) { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
ImageBag imageBag = read(bytes); |
||||||
|
|
||||||
|
RenderedImage renderedImage = imageBag.getRenderedImage(); |
||||||
|
|
||||||
|
if (renderedImage == null) { |
||||||
|
throw new IOException("Unable to decode image"); |
||||||
|
} |
||||||
|
|
||||||
|
String type = imageBag.getType(); |
||||||
|
|
||||||
|
int height = renderedImage.getHeight(); |
||||||
|
int width = renderedImage.getWidth(); |
||||||
|
int size = bytes.length; |
||||||
|
|
||||||
|
Image image = new ImageImpl(); |
||||||
|
|
||||||
|
image.setTextObj(bytes); |
||||||
|
image.setType(type); |
||||||
|
image.setHeight(height); |
||||||
|
image.setWidth(width); |
||||||
|
image.setSize(size); |
||||||
|
|
||||||
|
return image; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Image getImage(File file) throws IOException { |
||||||
|
byte[] bytes = _fileUtil.getBytes(file); |
||||||
|
|
||||||
|
return getImage(bytes); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Image getImage(InputStream is) throws IOException { |
||||||
|
byte[] bytes = _fileUtil.getBytes(is, -1, true); |
||||||
|
|
||||||
|
return getImage(bytes); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Image getImage(InputStream is, boolean cleanUpStream) |
||||||
|
throws IOException { |
||||||
|
|
||||||
|
byte[] bytes = _fileUtil.getBytes(is, -1, cleanUpStream); |
||||||
|
|
||||||
|
return getImage(bytes); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean isNullOrDefaultSpacer(byte[] bytes) { |
||||||
|
if (ArrayUtil.isEmpty(bytes) || |
||||||
|
Arrays.equals(bytes, getDefaultSpacer().getTextObj())) { |
||||||
|
|
||||||
|
return true; |
||||||
|
} |
||||||
|
else { |
||||||
|
return false; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public ImageBag read(byte[] bytes) { |
||||||
|
RenderedImage renderedImage = null; |
||||||
|
String type = TYPE_NOT_AVAILABLE; |
||||||
|
|
||||||
|
Enumeration<ImageCodec> enu = ImageCodec.getCodecs(); |
||||||
|
|
||||||
|
while (enu.hasMoreElements()) { |
||||||
|
ImageCodec codec = enu.nextElement(); |
||||||
|
|
||||||
|
if (codec.isFormatRecognized(bytes)) { |
||||||
|
type = codec.getFormatName(); |
||||||
|
|
||||||
|
renderedImage = read(bytes, type); |
||||||
|
|
||||||
|
break; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
if (type.equals("jpeg")) { |
||||||
|
type = TYPE_JPEG; |
||||||
|
} |
||||||
|
|
||||||
|
return new ImageBag(renderedImage, type); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public ImageBag read(File file) throws IOException { |
||||||
|
return read(_fileUtil.getBytes(file)); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public ImageBag read(InputStream inputStream) throws IOException { |
||||||
|
return read(_fileUtil.getBytes(inputStream)); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public RenderedImage scale(RenderedImage renderedImage, int width) { |
||||||
|
if (width <= 0) { |
||||||
|
return renderedImage; |
||||||
|
} |
||||||
|
|
||||||
|
int imageHeight = renderedImage.getHeight(); |
||||||
|
int imageWidth = renderedImage.getWidth(); |
||||||
|
|
||||||
|
double factor = (double)width / imageWidth; |
||||||
|
|
||||||
|
int scaledHeight = (int)Math.round(factor * imageHeight); |
||||||
|
int scaledWidth = width; |
||||||
|
|
||||||
|
return doScale(renderedImage, scaledHeight, scaledWidth); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public RenderedImage scale( |
||||||
|
RenderedImage renderedImage, int maxHeight, int maxWidth) { |
||||||
|
|
||||||
|
int imageHeight = renderedImage.getHeight(); |
||||||
|
int imageWidth = renderedImage.getWidth(); |
||||||
|
|
||||||
|
if (maxHeight == 0) { |
||||||
|
maxHeight = imageHeight; |
||||||
|
} |
||||||
|
|
||||||
|
if (maxWidth == 0) { |
||||||
|
maxWidth = imageWidth; |
||||||
|
} |
||||||
|
|
||||||
|
if ((imageHeight <= maxHeight) && (imageWidth <= maxWidth)) { |
||||||
|
return renderedImage; |
||||||
|
} |
||||||
|
|
||||||
|
double factor = Math.min( |
||||||
|
(double)maxHeight / imageHeight, (double)maxWidth / imageWidth); |
||||||
|
|
||||||
|
int scaledHeight = Math.max(1, (int)Math.round(factor * imageHeight)); |
||||||
|
int scaledWidth = Math.max(1, (int)Math.round(factor * imageWidth)); |
||||||
|
|
||||||
|
return doScale(renderedImage, scaledHeight, scaledWidth); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void write( |
||||||
|
RenderedImage renderedImage, String contentType, OutputStream os) |
||||||
|
throws IOException { |
||||||
|
|
||||||
|
if (contentType.contains(TYPE_BMP)) { |
||||||
|
ImageEncoder imageEncoder = ImageCodec.createImageEncoder( |
||||||
|
TYPE_BMP, os, null); |
||||||
|
|
||||||
|
imageEncoder.encode(renderedImage); |
||||||
|
} |
||||||
|
else if (contentType.contains(TYPE_GIF)) { |
||||||
|
encodeGIF(renderedImage, os); |
||||||
|
} |
||||||
|
else if (contentType.contains(TYPE_JPEG) || |
||||||
|
contentType.contains("jpeg")) { |
||||||
|
|
||||||
|
ImageIO.write(renderedImage, "jpeg", os); |
||||||
|
} |
||||||
|
else if (contentType.contains(TYPE_PNG)) { |
||||||
|
ImageIO.write(renderedImage, TYPE_PNG, os); |
||||||
|
} |
||||||
|
else if (contentType.contains(TYPE_TIFF) || |
||||||
|
contentType.contains("tif")) { |
||||||
|
|
||||||
|
ImageEncoder imageEncoder = ImageCodec.createImageEncoder( |
||||||
|
TYPE_TIFF, os, null); |
||||||
|
|
||||||
|
imageEncoder.encode(renderedImage); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
protected RenderedImage doScale( |
||||||
|
RenderedImage renderedImage, int scaledHeight, int scaledWidth) { |
||||||
|
|
||||||
|
// See http://www.oracle.com/technetwork/java/index-137037.html
|
||||||
|
|
||||||
|
BufferedImage originalBufferedImage = getBufferedImage(renderedImage); |
||||||
|
|
||||||
|
ColorModel originalColorModel = originalBufferedImage.getColorModel(); |
||||||
|
|
||||||
|
Graphics2D originalGraphics2D = originalBufferedImage.createGraphics(); |
||||||
|
|
||||||
|
if (originalColorModel.hasAlpha()) { |
||||||
|
originalGraphics2D.setComposite(AlphaComposite.Src); |
||||||
|
} |
||||||
|
|
||||||
|
GraphicsConfiguration originalGraphicsConfiguration = |
||||||
|
originalGraphics2D.getDeviceConfiguration(); |
||||||
|
|
||||||
|
BufferedImage scaledBufferedImage = |
||||||
|
originalGraphicsConfiguration.createCompatibleImage( |
||||||
|
scaledWidth, scaledHeight, |
||||||
|
originalBufferedImage.getTransparency()); |
||||||
|
|
||||||
|
Graphics scaledGraphics = scaledBufferedImage.getGraphics(); |
||||||
|
|
||||||
|
scaledGraphics.drawImage( |
||||||
|
originalBufferedImage.getScaledInstance( |
||||||
|
scaledWidth, scaledHeight, java.awt.Image.SCALE_SMOOTH), |
||||||
|
0, 0, null); |
||||||
|
|
||||||
|
originalGraphics2D.dispose(); |
||||||
|
|
||||||
|
return scaledBufferedImage; |
||||||
|
} |
||||||
|
|
||||||
|
protected ImageMagick getImageMagick() { |
||||||
|
if (_imageMagick == null) { |
||||||
|
_imageMagick = ImageMagickImpl.getInstance(); |
||||||
|
|
||||||
|
_imageMagick.reset(); |
||||||
|
} |
||||||
|
|
||||||
|
return _imageMagick; |
||||||
|
} |
||||||
|
|
||||||
|
protected RenderedImage read(byte[] bytes, String type) { |
||||||
|
RenderedImage renderedImage = null; |
||||||
|
|
||||||
|
try { |
||||||
|
if (type.equals(TYPE_JPEG)) { |
||||||
|
type = "jpeg"; |
||||||
|
} |
||||||
|
|
||||||
|
ImageDecoder imageDecoder = ImageCodec.createImageDecoder( |
||||||
|
type, new UnsyncByteArrayInputStream(bytes), null); |
||||||
|
|
||||||
|
renderedImage = imageDecoder.decodeAsRenderedImage(); |
||||||
|
} |
||||||
|
catch (IOException ioe) { |
||||||
|
if (_log.isDebugEnabled()) { |
||||||
|
_log.debug(type + ": " + ioe.getMessage()); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
return renderedImage; |
||||||
|
} |
||||||
|
|
||||||
|
protected byte[] toMultiByte(int intValue) { |
||||||
|
int numBits = 32; |
||||||
|
int mask = 0x80000000; |
||||||
|
|
||||||
|
while ((mask != 0) && ((intValue & mask) == 0)) { |
||||||
|
numBits--; |
||||||
|
mask >>>= 1; |
||||||
|
} |
||||||
|
|
||||||
|
int numBitsLeft = numBits; |
||||||
|
byte[] multiBytes = new byte[(numBitsLeft + 6) / 7]; |
||||||
|
|
||||||
|
int maxIndex = multiBytes.length - 1; |
||||||
|
|
||||||
|
for (int b = 0; b <= maxIndex; b++) { |
||||||
|
multiBytes[b] = (byte)((intValue >>> ((maxIndex - b) * 7)) & 0x7f); |
||||||
|
|
||||||
|
if (b != maxIndex) { |
||||||
|
multiBytes[b] |= (byte)0x80; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
return multiBytes; |
||||||
|
} |
||||||
|
|
||||||
|
private ImageToolImpl() { |
||||||
|
ImageIO.setUseCache(PropsValues.IMAGE_IO_USE_DISK_CACHE); |
||||||
|
} |
||||||
|
|
||||||
|
private static Log _log = LogFactoryUtil.getLog(ImageToolImpl.class); |
||||||
|
|
||||||
|
private static ImageTool _instance = new ImageToolImpl(); |
||||||
|
|
||||||
|
private static FileImpl _fileUtil = FileImpl.getInstance(); |
||||||
|
private static ImageMagick _imageMagick; |
||||||
|
|
||||||
|
private Image _defaultCompanyLogo; |
||||||
|
private Image _defaultOrganizationLogo; |
||||||
|
private Image _defaultSpacer; |
||||||
|
private Image _defaultUserFemalePortrait; |
||||||
|
private Image _defaultUserMalePortrait; |
||||||
|
|
||||||
|
private class RenderedImageFuture implements Future<RenderedImage> { |
||||||
|
|
||||||
|
public RenderedImageFuture( |
||||||
|
Future<?> future, File outputFile, String type) { |
||||||
|
|
||||||
|
_future = future; |
||||||
|
_outputFile = outputFile; |
||||||
|
_type = type; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean cancel(boolean mayInterruptIfRunning) { |
||||||
|
if (_future.isCancelled() || _future.isDone()) { |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
_future.cancel(true); |
||||||
|
|
||||||
|
return true; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public RenderedImage get() |
||||||
|
throws ExecutionException, InterruptedException { |
||||||
|
|
||||||
|
_future.get(); |
||||||
|
|
||||||
|
byte[] bytes = new byte[0]; |
||||||
|
|
||||||
|
try { |
||||||
|
bytes = _fileUtil.getBytes(_outputFile); |
||||||
|
} |
||||||
|
catch (IOException ioe) { |
||||||
|
throw new ExecutionException(ioe); |
||||||
|
} |
||||||
|
|
||||||
|
ImageBag imageBag = read(bytes); |
||||||
|
|
||||||
|
return imageBag.getRenderedImage(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public RenderedImage get(long timeout, TimeUnit timeUnit) |
||||||
|
throws ExecutionException, InterruptedException, TimeoutException { |
||||||
|
|
||||||
|
_future.get(timeout, timeUnit); |
||||||
|
|
||||||
|
byte[] bytes = new byte[0]; |
||||||
|
|
||||||
|
try { |
||||||
|
bytes = _fileUtil.getBytes(_outputFile); |
||||||
|
} |
||||||
|
catch (IOException ioe) { |
||||||
|
throw new ExecutionException(ioe); |
||||||
|
} |
||||||
|
|
||||||
|
ImageBag imageBag = read(bytes); |
||||||
|
|
||||||
|
return imageBag.getRenderedImage(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean isCancelled() { |
||||||
|
return _future.isCancelled(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean isDone() { |
||||||
|
return _future.isDone(); |
||||||
|
} |
||||||
|
|
||||||
|
private final Future<?> _future; |
||||||
|
private final File _outputFile; |
||||||
|
private final String _type; |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,65 @@ |
|||||||
|
/** |
||||||
|
* Copyright (c) 2000-2013 Liferay, Inc. All rights reserved. |
||||||
|
* |
||||||
|
* This library 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 2.1 of the License, or (at your option) |
||||||
|
* any later version. |
||||||
|
* |
||||||
|
* This library 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. |
||||||
|
*/ |
||||||
|
|
||||||
|
package com.liferay.portal.image; |
||||||
|
|
||||||
|
import com.liferay.portal.kernel.log.Log; |
||||||
|
import com.liferay.portal.kernel.log.LogFactoryUtil; |
||||||
|
import com.liferay.portal.kernel.util.StringBundler; |
||||||
|
import com.liferay.portal.kernel.util.StringPool; |
||||||
|
|
||||||
|
import java.util.LinkedList; |
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
import org.im4java.core.ConvertCmd; |
||||||
|
import org.im4java.process.ProcessTask; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author Alexander Chow |
||||||
|
* @author Ivica Cardic |
||||||
|
*/ |
||||||
|
public class LiferayConvertCmd extends ConvertCmd { |
||||||
|
|
||||||
|
public ProcessTask getProcessTask( |
||||||
|
String globalSearchPath, List<String> resourceLimits, |
||||||
|
List<String> commandArguments) |
||||||
|
throws Exception { |
||||||
|
|
||||||
|
setGlobalSearchPath(globalSearchPath); |
||||||
|
|
||||||
|
LinkedList<String> arguments = new LinkedList<String>(); |
||||||
|
|
||||||
|
arguments.addAll(_instance.getCommand()); |
||||||
|
arguments.addAll(resourceLimits); |
||||||
|
arguments.addAll(commandArguments); |
||||||
|
|
||||||
|
if (_log.isInfoEnabled()) { |
||||||
|
StringBundler sb = new StringBundler(arguments.size() * 2); |
||||||
|
|
||||||
|
for (String argument : arguments) { |
||||||
|
sb.append(argument); |
||||||
|
sb.append(StringPool.SPACE); |
||||||
|
} |
||||||
|
|
||||||
|
_log.info("Excecuting command '" + sb.toString() + "'"); |
||||||
|
} |
||||||
|
|
||||||
|
return getProcessTask(arguments); |
||||||
|
} |
||||||
|
|
||||||
|
private static Log _log = LogFactoryUtil.getLog(LiferayConvertCmd.class); |
||||||
|
|
||||||
|
private static LiferayConvertCmd _instance = new LiferayConvertCmd(); |
||||||
|
|
||||||
|
} |
@ -0,0 +1,65 @@ |
|||||||
|
/** |
||||||
|
* Copyright (c) 2000-2013 Liferay, Inc. All rights reserved. |
||||||
|
* |
||||||
|
* This library 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 2.1 of the License, or (at your option) |
||||||
|
* any later version. |
||||||
|
* |
||||||
|
* This library 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. |
||||||
|
*/ |
||||||
|
|
||||||
|
package com.liferay.portal.image; |
||||||
|
|
||||||
|
import com.liferay.portal.kernel.log.Log; |
||||||
|
import com.liferay.portal.kernel.log.LogFactoryUtil; |
||||||
|
import com.liferay.portal.kernel.util.StringBundler; |
||||||
|
import com.liferay.portal.kernel.util.StringPool; |
||||||
|
|
||||||
|
import java.util.LinkedList; |
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
import org.im4java.core.IdentifyCmd; |
||||||
|
import org.im4java.process.ProcessTask; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author Alexander Chow |
||||||
|
* @author Ivica Cardic |
||||||
|
*/ |
||||||
|
public class LiferayIdentifyCmd extends IdentifyCmd { |
||||||
|
|
||||||
|
public ProcessTask getProcessTask( |
||||||
|
String globalSearchPath, List<String> resourceLimits, |
||||||
|
List<String> commandArguments) |
||||||
|
throws Exception { |
||||||
|
|
||||||
|
setGlobalSearchPath(globalSearchPath); |
||||||
|
|
||||||
|
LinkedList<String> arguments = new LinkedList<String>(); |
||||||
|
|
||||||
|
arguments.addAll(_instance.getCommand()); |
||||||
|
arguments.addAll(resourceLimits); |
||||||
|
arguments.addAll(commandArguments); |
||||||
|
|
||||||
|
if (_log.isInfoEnabled()) { |
||||||
|
StringBundler sb = new StringBundler(arguments.size() * 2); |
||||||
|
|
||||||
|
for (String argument : arguments) { |
||||||
|
sb.append(argument); |
||||||
|
sb.append(StringPool.SPACE); |
||||||
|
} |
||||||
|
|
||||||
|
_log.info("Excecuting command '" + sb.toString() + "'"); |
||||||
|
} |
||||||
|
|
||||||
|
return getProcessTask(arguments); |
||||||
|
} |
||||||
|
|
||||||
|
private static Log _log = LogFactoryUtil.getLog(LiferayIdentifyCmd.class); |
||||||
|
|
||||||
|
private static LiferayIdentifyCmd _instance = new LiferayIdentifyCmd(); |
||||||
|
|
||||||
|
} |
@ -0,0 +1,45 @@ |
|||||||
|
/** |
||||||
|
* Copyright (c) 2000-2013 Liferay, Inc. All rights reserved. |
||||||
|
* |
||||||
|
* This library 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 2.1 of the License, or (at your option) |
||||||
|
* any later version. |
||||||
|
* |
||||||
|
* This library 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. |
||||||
|
*/ |
||||||
|
|
||||||
|
package com.liferay.portal.log; |
||||||
|
|
||||||
|
import com.liferay.portal.kernel.log.Log; |
||||||
|
import com.liferay.portal.kernel.log.LogFactory; |
||||||
|
import com.liferay.portal.kernel.security.pacl.DoPrivileged; |
||||||
|
import com.liferay.util.log4j.Log4JUtil; |
||||||
|
|
||||||
|
import org.apache.log4j.LogManager; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author Brian Wing Shun Chan |
||||||
|
*/ |
||||||
|
@DoPrivileged |
||||||
|
public class Log4jLogFactoryImpl implements LogFactory { |
||||||
|
|
||||||
|
@Override |
||||||
|
public Log getLog(Class<?> c) { |
||||||
|
return getLog(c.getName()); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Log getLog(String name) { |
||||||
|
return new Log4jLogImpl(LogManager.getLogger(name)); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void setLevel(String name, String priority, boolean custom) { |
||||||
|
Log4JUtil.setLevel(name, priority, custom); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,164 @@ |
|||||||
|
/** |
||||||
|
* Copyright (c) 2000-2013 Liferay, Inc. All rights reserved. |
||||||
|
* |
||||||
|
* This library 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 2.1 of the License, or (at your option) |
||||||
|
* any later version. |
||||||
|
* |
||||||
|
* This library 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. |
||||||
|
*/ |
||||||
|
|
||||||
|
package com.liferay.portal.log; |
||||||
|
|
||||||
|
import com.liferay.portal.kernel.log.Log; |
||||||
|
import com.liferay.portal.kernel.log.LogWrapper; |
||||||
|
|
||||||
|
import org.apache.log4j.Level; |
||||||
|
import org.apache.log4j.Logger; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author Brian Wing Shun Chan |
||||||
|
*/ |
||||||
|
public class Log4jLogImpl implements Log { |
||||||
|
|
||||||
|
public Log4jLogImpl(Logger logger) { |
||||||
|
_logger = logger; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void debug(Object msg) { |
||||||
|
_logger.log(_logWrapperClassName, Level.DEBUG, msg, null); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void debug(Object msg, Throwable t) { |
||||||
|
_logger.log(_logWrapperClassName, Level.DEBUG, msg, t); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void debug(Throwable t) { |
||||||
|
_logger.log(_logWrapperClassName, Level.DEBUG, null, t); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void error(Object msg) { |
||||||
|
_logger.log(_logWrapperClassName, Level.ERROR, msg, null); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void error(Object msg, Throwable t) { |
||||||
|
_logger.log(_logWrapperClassName, Level.ERROR, msg, t); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void error(Throwable t) { |
||||||
|
_logger.log(_logWrapperClassName, Level.ERROR, null, t); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void fatal(Object msg) { |
||||||
|
_logger.log(_logWrapperClassName, Level.FATAL, msg, null); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void fatal(Object msg, Throwable t) { |
||||||
|
_logger.log(_logWrapperClassName, Level.FATAL, msg, t); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void fatal(Throwable t) { |
||||||
|
_logger.log(_logWrapperClassName, Level.FATAL, null, t); |
||||||
|
} |
||||||
|
|
||||||
|
public Logger getWrappedLogger() { |
||||||
|
return _logger; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void info(Object msg) { |
||||||
|
_logger.log(_logWrapperClassName, Level.INFO, msg, null); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void info(Object msg, Throwable t) { |
||||||
|
_logger.log(_logWrapperClassName, Level.INFO, msg, t); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void info(Throwable t) { |
||||||
|
_logger.log(_logWrapperClassName, Level.INFO, null, t); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean isDebugEnabled() { |
||||||
|
return _logger.isDebugEnabled(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean isErrorEnabled() { |
||||||
|
return _logger.isEnabledFor(Level.ERROR); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean isFatalEnabled() { |
||||||
|
return _logger.isEnabledFor(Level.FATAL); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean isInfoEnabled() { |
||||||
|
return _logger.isInfoEnabled(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean isTraceEnabled() { |
||||||
|
return _logger.isTraceEnabled(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean isWarnEnabled() { |
||||||
|
return _logger.isEnabledFor(Level.WARN); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void setLogWrapperClassName(String className) { |
||||||
|
_logWrapperClassName = className; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void trace(Object msg) { |
||||||
|
_logger.log(_logWrapperClassName, Level.TRACE, msg, null); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void trace(Object msg, Throwable t) { |
||||||
|
_logger.log(_logWrapperClassName, Level.TRACE, msg, t); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void trace(Throwable t) { |
||||||
|
_logger.log(_logWrapperClassName, Level.TRACE, null, t); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void warn(Object msg) { |
||||||
|
_logger.log(_logWrapperClassName, Level.WARN, msg, null); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void warn(Object msg, Throwable t) { |
||||||
|
_logger.log(_logWrapperClassName, Level.WARN, msg, t); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void warn(Throwable t) { |
||||||
|
_logger.log(_logWrapperClassName, Level.WARN, null, t); |
||||||
|
} |
||||||
|
|
||||||
|
private Logger _logger; |
||||||
|
private String _logWrapperClassName = LogWrapper.class.getName(); |
||||||
|
|
||||||
|
} |
@ -0,0 +1,48 @@ |
|||||||
|
/** |
||||||
|
* Copyright (c) 2000-2013 Liferay, Inc. All rights reserved. |
||||||
|
* |
||||||
|
* This library 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 2.1 of the License, or (at your option) |
||||||
|
* any later version. |
||||||
|
* |
||||||
|
* This library 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. |
||||||
|
*/ |
||||||
|
|
||||||
|
package com.liferay.portal.model.impl; |
||||||
|
|
||||||
|
import com.liferay.portal.kernel.exception.SystemException; |
||||||
|
import com.liferay.portal.model.Image; |
||||||
|
import com.liferay.portal.service.ImageLocalServiceUtil; |
||||||
|
|
||||||
|
/** |
||||||
|
* The extended model base implementation for the Image service. Represents a row in the "Image" database table, with each column mapped to a property of this class. |
||||||
|
* |
||||||
|
* <p> |
||||||
|
* This class exists only as a container for the default extended model level methods generated by ServiceBuilder. Helper methods and all application logic should be put in {@link ImageImpl}. |
||||||
|
* </p> |
||||||
|
* |
||||||
|
* @author Brian Wing Shun Chan |
||||||
|
* @see ImageImpl |
||||||
|
* @see com.liferay.portal.model.Image |
||||||
|
* @generated |
||||||
|
*/ |
||||||
|
public abstract class ImageBaseImpl extends ImageModelImpl implements Image { |
||||||
|
/* |
||||||
|
* NOTE FOR DEVELOPERS: |
||||||
|
* |
||||||
|
* Never modify or reference this class directly. All methods that expect a image model instance should use the {@link Image} interface instead. |
||||||
|
*/ |
||||||
|
@Override |
||||||
|
public void persist() throws SystemException { |
||||||
|
if (this.isNew()) { |
||||||
|
ImageLocalServiceUtil.addImage(this); |
||||||
|
} |
||||||
|
else { |
||||||
|
ImageLocalServiceUtil.updateImage(this); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,121 @@ |
|||||||
|
/** |
||||||
|
* Copyright (c) 2000-2013 Liferay, Inc. All rights reserved. |
||||||
|
* |
||||||
|
* This library 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 2.1 of the License, or (at your option) |
||||||
|
* any later version. |
||||||
|
* |
||||||
|
* This library 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. |
||||||
|
*/ |
||||||
|
|
||||||
|
package com.liferay.portal.model.impl; |
||||||
|
|
||||||
|
import com.liferay.portal.kernel.util.StringBundler; |
||||||
|
import com.liferay.portal.kernel.util.StringPool; |
||||||
|
import com.liferay.portal.model.CacheModel; |
||||||
|
import com.liferay.portal.model.Image; |
||||||
|
|
||||||
|
import java.io.Externalizable; |
||||||
|
import java.io.IOException; |
||||||
|
import java.io.ObjectInput; |
||||||
|
import java.io.ObjectOutput; |
||||||
|
|
||||||
|
import java.util.Date; |
||||||
|
|
||||||
|
/** |
||||||
|
* The cache model class for representing Image in entity cache. |
||||||
|
* |
||||||
|
* @author Brian Wing Shun Chan |
||||||
|
* @see Image |
||||||
|
* @generated |
||||||
|
*/ |
||||||
|
public class ImageCacheModel implements CacheModel<Image>, Externalizable { |
||||||
|
@Override |
||||||
|
public String toString() { |
||||||
|
StringBundler sb = new StringBundler(13); |
||||||
|
|
||||||
|
sb.append("{imageId="); |
||||||
|
sb.append(imageId); |
||||||
|
sb.append(", modifiedDate="); |
||||||
|
sb.append(modifiedDate); |
||||||
|
sb.append(", type="); |
||||||
|
sb.append(type); |
||||||
|
sb.append(", height="); |
||||||
|
sb.append(height); |
||||||
|
sb.append(", width="); |
||||||
|
sb.append(width); |
||||||
|
sb.append(", size="); |
||||||
|
sb.append(size); |
||||||
|
sb.append("}"); |
||||||
|
|
||||||
|
return sb.toString(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Image toEntityModel() { |
||||||
|
ImageImpl imageImpl = new ImageImpl(); |
||||||
|
|
||||||
|
imageImpl.setImageId(imageId); |
||||||
|
|
||||||
|
if (modifiedDate == Long.MIN_VALUE) { |
||||||
|
imageImpl.setModifiedDate(null); |
||||||
|
} |
||||||
|
else { |
||||||
|
imageImpl.setModifiedDate(new Date(modifiedDate)); |
||||||
|
} |
||||||
|
|
||||||
|
if (type == null) { |
||||||
|
imageImpl.setType(StringPool.BLANK); |
||||||
|
} |
||||||
|
else { |
||||||
|
imageImpl.setType(type); |
||||||
|
} |
||||||
|
|
||||||
|
imageImpl.setHeight(height); |
||||||
|
imageImpl.setWidth(width); |
||||||
|
imageImpl.setSize(size); |
||||||
|
|
||||||
|
imageImpl.resetOriginalValues(); |
||||||
|
|
||||||
|
return imageImpl; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void readExternal(ObjectInput objectInput) throws IOException { |
||||||
|
imageId = objectInput.readLong(); |
||||||
|
modifiedDate = objectInput.readLong(); |
||||||
|
type = objectInput.readUTF(); |
||||||
|
height = objectInput.readInt(); |
||||||
|
width = objectInput.readInt(); |
||||||
|
size = objectInput.readInt(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void writeExternal(ObjectOutput objectOutput) |
||||||
|
throws IOException { |
||||||
|
objectOutput.writeLong(imageId); |
||||||
|
objectOutput.writeLong(modifiedDate); |
||||||
|
|
||||||
|
if (type == null) { |
||||||
|
objectOutput.writeUTF(StringPool.BLANK); |
||||||
|
} |
||||||
|
else { |
||||||
|
objectOutput.writeUTF(type); |
||||||
|
} |
||||||
|
|
||||||
|
objectOutput.writeInt(height); |
||||||
|
objectOutput.writeInt(width); |
||||||
|
objectOutput.writeInt(size); |
||||||
|
} |
||||||
|
|
||||||
|
public long imageId; |
||||||
|
public long modifiedDate; |
||||||
|
public String type; |
||||||
|
public int height; |
||||||
|
public int width; |
||||||
|
public int size; |
||||||
|
} |
@ -0,0 +1,95 @@ |
|||||||
|
/** |
||||||
|
* Copyright (c) 2000-2013 Liferay, Inc. All rights reserved. |
||||||
|
* |
||||||
|
* This library 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 2.1 of the License, or (at your option) |
||||||
|
* any later version. |
||||||
|
* |
||||||
|
* This library 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. |
||||||
|
*/ |
||||||
|
|
||||||
|
package com.liferay.portal.model.impl; |
||||||
|
|
||||||
|
import com.liferay.portal.kernel.log.Log; |
||||||
|
import com.liferay.portal.kernel.log.LogFactoryUtil; |
||||||
|
import com.liferay.portal.kernel.util.FileUtil; |
||||||
|
import com.liferay.portal.kernel.util.StringPool; |
||||||
|
import com.liferay.portal.util.PropsValues; |
||||||
|
import com.liferay.portlet.documentlibrary.model.DLFileEntry; |
||||||
|
import com.liferay.portlet.documentlibrary.service.DLFileEntryLocalServiceUtil; |
||||||
|
import com.liferay.portlet.documentlibrary.store.DLStoreUtil; |
||||||
|
|
||||||
|
import java.io.InputStream; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author Brian Wing Shun Chan |
||||||
|
*/ |
||||||
|
public class ImageImpl extends ImageBaseImpl { |
||||||
|
|
||||||
|
public ImageImpl() { |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public byte[] getTextObj() { |
||||||
|
if (_textObj != null) { |
||||||
|
return _textObj; |
||||||
|
} |
||||||
|
|
||||||
|
long imageId = getImageId(); |
||||||
|
|
||||||
|
try { |
||||||
|
DLFileEntry dlFileEntry = null; |
||||||
|
|
||||||
|
if (PropsValues.WEB_SERVER_SERVLET_CHECK_IMAGE_GALLERY) { |
||||||
|
dlFileEntry = |
||||||
|
DLFileEntryLocalServiceUtil.fetchFileEntryByAnyImageId( |
||||||
|
imageId); |
||||||
|
} |
||||||
|
|
||||||
|
InputStream is = null; |
||||||
|
|
||||||
|
if ((dlFileEntry != null) && |
||||||
|
(dlFileEntry.getLargeImageId() == imageId)) { |
||||||
|
|
||||||
|
is = DLStoreUtil.getFileAsStream( |
||||||
|
dlFileEntry.getCompanyId(), |
||||||
|
dlFileEntry.getDataRepositoryId(), dlFileEntry.getName()); |
||||||
|
} |
||||||
|
else { |
||||||
|
is = DLStoreUtil.getFileAsStream( |
||||||
|
_DEFAULT_COMPANY_ID, _DEFAULT_REPOSITORY_ID, getFileName()); |
||||||
|
} |
||||||
|
|
||||||
|
byte[] bytes = FileUtil.getBytes(is); |
||||||
|
|
||||||
|
_textObj = bytes; |
||||||
|
} |
||||||
|
catch (Exception e) { |
||||||
|
_log.error("Error reading image " + imageId, e); |
||||||
|
} |
||||||
|
|
||||||
|
return _textObj; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void setTextObj(byte[] textObj) { |
||||||
|
_textObj = textObj; |
||||||
|
} |
||||||
|
|
||||||
|
protected String getFileName() { |
||||||
|
return getImageId() + StringPool.PERIOD + getType(); |
||||||
|
} |
||||||
|
|
||||||
|
private static final long _DEFAULT_COMPANY_ID = 0; |
||||||
|
|
||||||
|
private static final long _DEFAULT_REPOSITORY_ID = 0; |
||||||
|
|
||||||
|
private static Log _log = LogFactoryUtil.getLog(ImageImpl.class); |
||||||
|
|
||||||
|
private byte[] _textObj; |
||||||
|
|
||||||
|
} |
@ -0,0 +1,512 @@ |
|||||||
|
/** |
||||||
|
* Copyright (c) 2000-2013 Liferay, Inc. All rights reserved. |
||||||
|
* |
||||||
|
* This library 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 2.1 of the License, or (at your option) |
||||||
|
* any later version. |
||||||
|
* |
||||||
|
* This library 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. |
||||||
|
*/ |
||||||
|
|
||||||
|
package com.liferay.portal.model.impl; |
||||||
|
|
||||||
|
import com.liferay.portal.kernel.bean.AutoEscapeBeanHandler; |
||||||
|
import com.liferay.portal.kernel.json.JSON; |
||||||
|
import com.liferay.portal.kernel.util.GetterUtil; |
||||||
|
import com.liferay.portal.kernel.util.ProxyUtil; |
||||||
|
import com.liferay.portal.kernel.util.StringBundler; |
||||||
|
import com.liferay.portal.kernel.util.StringPool; |
||||||
|
import com.liferay.portal.model.CacheModel; |
||||||
|
import com.liferay.portal.model.Image; |
||||||
|
import com.liferay.portal.model.ImageModel; |
||||||
|
import com.liferay.portal.model.ImageSoap; |
||||||
|
import com.liferay.portal.service.ServiceContext; |
||||||
|
|
||||||
|
import com.liferay.portlet.expando.model.ExpandoBridge; |
||||||
|
import com.liferay.portlet.expando.util.ExpandoBridgeFactoryUtil; |
||||||
|
|
||||||
|
import java.io.Serializable; |
||||||
|
|
||||||
|
import java.sql.Types; |
||||||
|
|
||||||
|
import java.util.ArrayList; |
||||||
|
import java.util.Date; |
||||||
|
import java.util.HashMap; |
||||||
|
import java.util.List; |
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
/** |
||||||
|
* The base model implementation for the Image service. Represents a row in the "Image" database table, with each column mapped to a property of this class. |
||||||
|
* |
||||||
|
* <p> |
||||||
|
* This implementation and its corresponding interface {@link com.liferay.portal.model.ImageModel} exist only as a container for the default property accessors generated by ServiceBuilder. Helper methods and all application logic should be put in {@link ImageImpl}. |
||||||
|
* </p> |
||||||
|
* |
||||||
|
* @author Brian Wing Shun Chan |
||||||
|
* @see ImageImpl |
||||||
|
* @see com.liferay.portal.model.Image |
||||||
|
* @see com.liferay.portal.model.ImageModel |
||||||
|
* @generated |
||||||
|
*/ |
||||||
|
@JSON(strict = true) |
||||||
|
public class ImageModelImpl extends BaseModelImpl<Image> implements ImageModel { |
||||||
|
/* |
||||||
|
* NOTE FOR DEVELOPERS: |
||||||
|
* |
||||||
|
* Never modify or reference this class directly. All methods that expect a image model instance should use the {@link com.liferay.portal.model.Image} interface instead. |
||||||
|
*/ |
||||||
|
public static final String TABLE_NAME = "Image"; |
||||||
|
public static final Object[][] TABLE_COLUMNS = { |
||||||
|
{ "imageId", Types.BIGINT }, |
||||||
|
{ "modifiedDate", Types.TIMESTAMP }, |
||||||
|
{ "type_", Types.VARCHAR }, |
||||||
|
{ "height", Types.INTEGER }, |
||||||
|
{ "width", Types.INTEGER }, |
||||||
|
{ "size_", Types.INTEGER } |
||||||
|
}; |
||||||
|
public static final String TABLE_SQL_CREATE = "create table Image (imageId LONG not null primary key,modifiedDate DATE null,type_ VARCHAR(75) null,height INTEGER,width INTEGER,size_ INTEGER)"; |
||||||
|
public static final String TABLE_SQL_DROP = "drop table Image"; |
||||||
|
public static final String ORDER_BY_JPQL = " ORDER BY image.imageId ASC"; |
||||||
|
public static final String ORDER_BY_SQL = " ORDER BY Image.imageId ASC"; |
||||||
|
public static final String DATA_SOURCE = "liferayDataSource"; |
||||||
|
public static final String SESSION_FACTORY = "liferaySessionFactory"; |
||||||
|
public static final String TX_MANAGER = "liferayTransactionManager"; |
||||||
|
public static final boolean ENTITY_CACHE_ENABLED = GetterUtil.getBoolean(com.liferay.portal.util.PropsUtil.get( |
||||||
|
"value.object.entity.cache.enabled.com.liferay.portal.model.Image"), |
||||||
|
true); |
||||||
|
public static final boolean FINDER_CACHE_ENABLED = GetterUtil.getBoolean(com.liferay.portal.util.PropsUtil.get( |
||||||
|
"value.object.finder.cache.enabled.com.liferay.portal.model.Image"), |
||||||
|
true); |
||||||
|
public static final boolean COLUMN_BITMASK_ENABLED = GetterUtil.getBoolean(com.liferay.portal.util.PropsUtil.get( |
||||||
|
"value.object.column.bitmask.enabled.com.liferay.portal.model.Image"), |
||||||
|
true); |
||||||
|
public static long SIZE_COLUMN_BITMASK = 1L; |
||||||
|
public static long IMAGEID_COLUMN_BITMASK = 2L; |
||||||
|
|
||||||
|
/** |
||||||
|
* Converts the soap model instance into a normal model instance. |
||||||
|
* |
||||||
|
* @param soapModel the soap model instance to convert |
||||||
|
* @return the normal model instance |
||||||
|
*/ |
||||||
|
public static Image toModel(ImageSoap soapModel) { |
||||||
|
if (soapModel == null) { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
Image model = new ImageImpl(); |
||||||
|
|
||||||
|
model.setImageId(soapModel.getImageId()); |
||||||
|
model.setModifiedDate(soapModel.getModifiedDate()); |
||||||
|
model.setType(soapModel.getType()); |
||||||
|
model.setHeight(soapModel.getHeight()); |
||||||
|
model.setWidth(soapModel.getWidth()); |
||||||
|
model.setSize(soapModel.getSize()); |
||||||
|
|
||||||
|
return model; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Converts the soap model instances into normal model instances. |
||||||
|
* |
||||||
|
* @param soapModels the soap model instances to convert |
||||||
|
* @return the normal model instances |
||||||
|
*/ |
||||||
|
public static List<Image> toModels(ImageSoap[] soapModels) { |
||||||
|
if (soapModels == null) { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
List<Image> models = new ArrayList<Image>(soapModels.length); |
||||||
|
|
||||||
|
for (ImageSoap soapModel : soapModels) { |
||||||
|
models.add(toModel(soapModel)); |
||||||
|
} |
||||||
|
|
||||||
|
return models; |
||||||
|
} |
||||||
|
|
||||||
|
public static final long LOCK_EXPIRATION_TIME = GetterUtil.getLong(com.liferay.portal.util.PropsUtil.get( |
||||||
|
"lock.expiration.time.com.liferay.portal.model.Image")); |
||||||
|
|
||||||
|
public ImageModelImpl() { |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public long getPrimaryKey() { |
||||||
|
return _imageId; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void setPrimaryKey(long primaryKey) { |
||||||
|
setImageId(primaryKey); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Serializable getPrimaryKeyObj() { |
||||||
|
return _imageId; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void setPrimaryKeyObj(Serializable primaryKeyObj) { |
||||||
|
setPrimaryKey(((Long)primaryKeyObj).longValue()); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Class<?> getModelClass() { |
||||||
|
return Image.class; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getModelClassName() { |
||||||
|
return Image.class.getName(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Map<String, Object> getModelAttributes() { |
||||||
|
Map<String, Object> attributes = new HashMap<String, Object>(); |
||||||
|
|
||||||
|
attributes.put("imageId", getImageId()); |
||||||
|
attributes.put("modifiedDate", getModifiedDate()); |
||||||
|
attributes.put("type", getType()); |
||||||
|
attributes.put("height", getHeight()); |
||||||
|
attributes.put("width", getWidth()); |
||||||
|
attributes.put("size", getSize()); |
||||||
|
|
||||||
|
return attributes; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void setModelAttributes(Map<String, Object> attributes) { |
||||||
|
Long imageId = (Long)attributes.get("imageId"); |
||||||
|
|
||||||
|
if (imageId != null) { |
||||||
|
setImageId(imageId); |
||||||
|
} |
||||||
|
|
||||||
|
Date modifiedDate = (Date)attributes.get("modifiedDate"); |
||||||
|
|
||||||
|
if (modifiedDate != null) { |
||||||
|
setModifiedDate(modifiedDate); |
||||||
|
} |
||||||
|
|
||||||
|
String type = (String)attributes.get("type"); |
||||||
|
|
||||||
|
if (type != null) { |
||||||
|
setType(type); |
||||||
|
} |
||||||
|
|
||||||
|
Integer height = (Integer)attributes.get("height"); |
||||||
|
|
||||||
|
if (height != null) { |
||||||
|
setHeight(height); |
||||||
|
} |
||||||
|
|
||||||
|
Integer width = (Integer)attributes.get("width"); |
||||||
|
|
||||||
|
if (width != null) { |
||||||
|
setWidth(width); |
||||||
|
} |
||||||
|
|
||||||
|
Integer size = (Integer)attributes.get("size"); |
||||||
|
|
||||||
|
if (size != null) { |
||||||
|
setSize(size); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@JSON |
||||||
|
@Override |
||||||
|
public long getImageId() { |
||||||
|
return _imageId; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void setImageId(long imageId) { |
||||||
|
_columnBitmask = -1L; |
||||||
|
|
||||||
|
_imageId = imageId; |
||||||
|
} |
||||||
|
|
||||||
|
@JSON |
||||||
|
@Override |
||||||
|
public Date getModifiedDate() { |
||||||
|
return _modifiedDate; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void setModifiedDate(Date modifiedDate) { |
||||||
|
_modifiedDate = modifiedDate; |
||||||
|
} |
||||||
|
|
||||||
|
@JSON |
||||||
|
@Override |
||||||
|
public String getType() { |
||||||
|
if (_type == null) { |
||||||
|
return StringPool.BLANK; |
||||||
|
} |
||||||
|
else { |
||||||
|
return _type; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void setType(String type) { |
||||||
|
_type = type; |
||||||
|
} |
||||||
|
|
||||||
|
@JSON |
||||||
|
@Override |
||||||
|
public int getHeight() { |
||||||
|
return _height; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void setHeight(int height) { |
||||||
|
_height = height; |
||||||
|
} |
||||||
|
|
||||||
|
@JSON |
||||||
|
@Override |
||||||
|
public int getWidth() { |
||||||
|
return _width; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void setWidth(int width) { |
||||||
|
_width = width; |
||||||
|
} |
||||||
|
|
||||||
|
@JSON |
||||||
|
@Override |
||||||
|
public int getSize() { |
||||||
|
return _size; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void setSize(int size) { |
||||||
|
_columnBitmask |= SIZE_COLUMN_BITMASK; |
||||||
|
|
||||||
|
if (!_setOriginalSize) { |
||||||
|
_setOriginalSize = true; |
||||||
|
|
||||||
|
_originalSize = _size; |
||||||
|
} |
||||||
|
|
||||||
|
_size = size; |
||||||
|
} |
||||||
|
|
||||||
|
public int getOriginalSize() { |
||||||
|
return _originalSize; |
||||||
|
} |
||||||
|
|
||||||
|
public long getColumnBitmask() { |
||||||
|
return _columnBitmask; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public ExpandoBridge getExpandoBridge() { |
||||||
|
return ExpandoBridgeFactoryUtil.getExpandoBridge(0, |
||||||
|
Image.class.getName(), getPrimaryKey()); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void setExpandoBridgeAttributes(ServiceContext serviceContext) { |
||||||
|
ExpandoBridge expandoBridge = getExpandoBridge(); |
||||||
|
|
||||||
|
expandoBridge.setAttributes(serviceContext); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Image toEscapedModel() { |
||||||
|
if (_escapedModel == null) { |
||||||
|
_escapedModel = (Image)ProxyUtil.newProxyInstance(_classLoader, |
||||||
|
_escapedModelInterfaces, new AutoEscapeBeanHandler(this)); |
||||||
|
} |
||||||
|
|
||||||
|
return _escapedModel; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Object clone() { |
||||||
|
ImageImpl imageImpl = new ImageImpl(); |
||||||
|
|
||||||
|
imageImpl.setImageId(getImageId()); |
||||||
|
imageImpl.setModifiedDate(getModifiedDate()); |
||||||
|
imageImpl.setType(getType()); |
||||||
|
imageImpl.setHeight(getHeight()); |
||||||
|
imageImpl.setWidth(getWidth()); |
||||||
|
imageImpl.setSize(getSize()); |
||||||
|
|
||||||
|
imageImpl.resetOriginalValues(); |
||||||
|
|
||||||
|
return imageImpl; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public int compareTo(Image image) { |
||||||
|
int value = 0; |
||||||
|
|
||||||
|
if (getImageId() < image.getImageId()) { |
||||||
|
value = -1; |
||||||
|
} |
||||||
|
else if (getImageId() > image.getImageId()) { |
||||||
|
value = 1; |
||||||
|
} |
||||||
|
else { |
||||||
|
value = 0; |
||||||
|
} |
||||||
|
|
||||||
|
if (value != 0) { |
||||||
|
return value; |
||||||
|
} |
||||||
|
|
||||||
|
return 0; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean equals(Object obj) { |
||||||
|
if (this == obj) { |
||||||
|
return true; |
||||||
|
} |
||||||
|
|
||||||
|
if (!(obj instanceof Image)) { |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
Image image = (Image)obj; |
||||||
|
|
||||||
|
long primaryKey = image.getPrimaryKey(); |
||||||
|
|
||||||
|
if (getPrimaryKey() == primaryKey) { |
||||||
|
return true; |
||||||
|
} |
||||||
|
else { |
||||||
|
return false; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public int hashCode() { |
||||||
|
return (int)getPrimaryKey(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void resetOriginalValues() { |
||||||
|
ImageModelImpl imageModelImpl = this; |
||||||
|
|
||||||
|
imageModelImpl._originalSize = imageModelImpl._size; |
||||||
|
|
||||||
|
imageModelImpl._setOriginalSize = false; |
||||||
|
|
||||||
|
imageModelImpl._columnBitmask = 0; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public CacheModel<Image> toCacheModel() { |
||||||
|
ImageCacheModel imageCacheModel = new ImageCacheModel(); |
||||||
|
|
||||||
|
imageCacheModel.imageId = getImageId(); |
||||||
|
|
||||||
|
Date modifiedDate = getModifiedDate(); |
||||||
|
|
||||||
|
if (modifiedDate != null) { |
||||||
|
imageCacheModel.modifiedDate = modifiedDate.getTime(); |
||||||
|
} |
||||||
|
else { |
||||||
|
imageCacheModel.modifiedDate = Long.MIN_VALUE; |
||||||
|
} |
||||||
|
|
||||||
|
imageCacheModel.type = getType(); |
||||||
|
|
||||||
|
String type = imageCacheModel.type; |
||||||
|
|
||||||
|
if ((type != null) && (type.length() == 0)) { |
||||||
|
imageCacheModel.type = null; |
||||||
|
} |
||||||
|
|
||||||
|
imageCacheModel.height = getHeight(); |
||||||
|
|
||||||
|
imageCacheModel.width = getWidth(); |
||||||
|
|
||||||
|
imageCacheModel.size = getSize(); |
||||||
|
|
||||||
|
return imageCacheModel; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String toString() { |
||||||
|
StringBundler sb = new StringBundler(13); |
||||||
|
|
||||||
|
sb.append("{imageId="); |
||||||
|
sb.append(getImageId()); |
||||||
|
sb.append(", modifiedDate="); |
||||||
|
sb.append(getModifiedDate()); |
||||||
|
sb.append(", type="); |
||||||
|
sb.append(getType()); |
||||||
|
sb.append(", height="); |
||||||
|
sb.append(getHeight()); |
||||||
|
sb.append(", width="); |
||||||
|
sb.append(getWidth()); |
||||||
|
sb.append(", size="); |
||||||
|
sb.append(getSize()); |
||||||
|
sb.append("}"); |
||||||
|
|
||||||
|
return sb.toString(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String toXmlString() { |
||||||
|
StringBundler sb = new StringBundler(22); |
||||||
|
|
||||||
|
sb.append("<model><model-name>"); |
||||||
|
sb.append("com.liferay.portal.model.Image"); |
||||||
|
sb.append("</model-name>"); |
||||||
|
|
||||||
|
sb.append( |
||||||
|
"<column><column-name>imageId</column-name><column-value><![CDATA["); |
||||||
|
sb.append(getImageId()); |
||||||
|
sb.append("]]></column-value></column>"); |
||||||
|
sb.append( |
||||||
|
"<column><column-name>modifiedDate</column-name><column-value><![CDATA["); |
||||||
|
sb.append(getModifiedDate()); |
||||||
|
sb.append("]]></column-value></column>"); |
||||||
|
sb.append( |
||||||
|
"<column><column-name>type</column-name><column-value><![CDATA["); |
||||||
|
sb.append(getType()); |
||||||
|
sb.append("]]></column-value></column>"); |
||||||
|
sb.append( |
||||||
|
"<column><column-name>height</column-name><column-value><![CDATA["); |
||||||
|
sb.append(getHeight()); |
||||||
|
sb.append("]]></column-value></column>"); |
||||||
|
sb.append( |
||||||
|
"<column><column-name>width</column-name><column-value><![CDATA["); |
||||||
|
sb.append(getWidth()); |
||||||
|
sb.append("]]></column-value></column>"); |
||||||
|
sb.append( |
||||||
|
"<column><column-name>size</column-name><column-value><![CDATA["); |
||||||
|
sb.append(getSize()); |
||||||
|
sb.append("]]></column-value></column>"); |
||||||
|
|
||||||
|
sb.append("</model>"); |
||||||
|
|
||||||
|
return sb.toString(); |
||||||
|
} |
||||||
|
|
||||||
|
private static ClassLoader _classLoader = Image.class.getClassLoader(); |
||||||
|
private static Class<?>[] _escapedModelInterfaces = new Class[] { Image.class }; |
||||||
|
private long _imageId; |
||||||
|
private Date _modifiedDate; |
||||||
|
private String _type; |
||||||
|
private int _height; |
||||||
|
private int _width; |
||||||
|
private int _size; |
||||||
|
private int _originalSize; |
||||||
|
private boolean _setOriginalSize; |
||||||
|
private long _columnBitmask; |
||||||
|
private Image _escapedModel; |
||||||
|
} |
@ -0,0 +1,49 @@ |
|||||||
|
/** |
||||||
|
* Copyright (c) 2000-2013 Liferay, Inc. All rights reserved. |
||||||
|
* |
||||||
|
* This library 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 2.1 of the License, or (at your option) |
||||||
|
* any later version. |
||||||
|
* |
||||||
|
* This library 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. |
||||||
|
*/ |
||||||
|
|
||||||
|
package com.liferay.portal.model.impl; |
||||||
|
|
||||||
|
import com.liferay.portal.kernel.exception.SystemException; |
||||||
|
import com.liferay.portal.model.PortalPreferences; |
||||||
|
import com.liferay.portal.service.PortalPreferencesLocalServiceUtil; |
||||||
|
|
||||||
|
/** |
||||||
|
* The extended model base implementation for the PortalPreferences service. Represents a row in the "PortalPreferences" database table, with each column mapped to a property of this class. |
||||||
|
* |
||||||
|
* <p> |
||||||
|
* This class exists only as a container for the default extended model level methods generated by ServiceBuilder. Helper methods and all application logic should be put in {@link PortalPreferencesImpl}. |
||||||
|
* </p> |
||||||
|
* |
||||||
|
* @author Brian Wing Shun Chan |
||||||
|
* @see PortalPreferencesImpl |
||||||
|
* @see com.liferay.portal.model.PortalPreferences |
||||||
|
* @generated |
||||||
|
*/ |
||||||
|
public abstract class PortalPreferencesBaseImpl |
||||||
|
extends PortalPreferencesModelImpl implements PortalPreferences { |
||||||
|
/* |
||||||
|
* NOTE FOR DEVELOPERS: |
||||||
|
* |
||||||
|
* Never modify or reference this class directly. All methods that expect a portal preferences model instance should use the {@link PortalPreferences} interface instead. |
||||||
|
*/ |
||||||
|
@Override |
||||||
|
public void persist() throws SystemException { |
||||||
|
if (this.isNew()) { |
||||||
|
PortalPreferencesLocalServiceUtil.addPortalPreferences(this); |
||||||
|
} |
||||||
|
else { |
||||||
|
PortalPreferencesLocalServiceUtil.updatePortalPreferences(this); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,100 @@ |
|||||||
|
/** |
||||||
|
* Copyright (c) 2000-2013 Liferay, Inc. All rights reserved. |
||||||
|
* |
||||||
|
* This library 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 2.1 of the License, or (at your option) |
||||||
|
* any later version. |
||||||
|
* |
||||||
|
* This library 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. |
||||||
|
*/ |
||||||
|
|
||||||
|
package com.liferay.portal.model.impl; |
||||||
|
|
||||||
|
import com.liferay.portal.kernel.util.StringBundler; |
||||||
|
import com.liferay.portal.kernel.util.StringPool; |
||||||
|
import com.liferay.portal.model.CacheModel; |
||||||
|
import com.liferay.portal.model.PortalPreferences; |
||||||
|
|
||||||
|
import java.io.Externalizable; |
||||||
|
import java.io.IOException; |
||||||
|
import java.io.ObjectInput; |
||||||
|
import java.io.ObjectOutput; |
||||||
|
|
||||||
|
/** |
||||||
|
* The cache model class for representing PortalPreferences in entity cache. |
||||||
|
* |
||||||
|
* @author Brian Wing Shun Chan |
||||||
|
* @see PortalPreferences |
||||||
|
* @generated |
||||||
|
*/ |
||||||
|
public class PortalPreferencesCacheModel implements CacheModel<PortalPreferences>, |
||||||
|
Externalizable { |
||||||
|
@Override |
||||||
|
public String toString() { |
||||||
|
StringBundler sb = new StringBundler(9); |
||||||
|
|
||||||
|
sb.append("{portalPreferencesId="); |
||||||
|
sb.append(portalPreferencesId); |
||||||
|
sb.append(", ownerId="); |
||||||
|
sb.append(ownerId); |
||||||
|
sb.append(", ownerType="); |
||||||
|
sb.append(ownerType); |
||||||
|
sb.append(", preferences="); |
||||||
|
sb.append(preferences); |
||||||
|
sb.append("}"); |
||||||
|
|
||||||
|
return sb.toString(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public PortalPreferences toEntityModel() { |
||||||
|
PortalPreferencesImpl portalPreferencesImpl = new PortalPreferencesImpl(); |
||||||
|
|
||||||
|
portalPreferencesImpl.setPortalPreferencesId(portalPreferencesId); |
||||||
|
portalPreferencesImpl.setOwnerId(ownerId); |
||||||
|
portalPreferencesImpl.setOwnerType(ownerType); |
||||||
|
|
||||||
|
if (preferences == null) { |
||||||
|
portalPreferencesImpl.setPreferences(StringPool.BLANK); |
||||||
|
} |
||||||
|
else { |
||||||
|
portalPreferencesImpl.setPreferences(preferences); |
||||||
|
} |
||||||
|
|
||||||
|
portalPreferencesImpl.resetOriginalValues(); |
||||||
|
|
||||||
|
return portalPreferencesImpl; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void readExternal(ObjectInput objectInput) throws IOException { |
||||||
|
portalPreferencesId = objectInput.readLong(); |
||||||
|
ownerId = objectInput.readLong(); |
||||||
|
ownerType = objectInput.readInt(); |
||||||
|
preferences = objectInput.readUTF(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void writeExternal(ObjectOutput objectOutput) |
||||||
|
throws IOException { |
||||||
|
objectOutput.writeLong(portalPreferencesId); |
||||||
|
objectOutput.writeLong(ownerId); |
||||||
|
objectOutput.writeInt(ownerType); |
||||||
|
|
||||||
|
if (preferences == null) { |
||||||
|
objectOutput.writeUTF(StringPool.BLANK); |
||||||
|
} |
||||||
|
else { |
||||||
|
objectOutput.writeUTF(preferences); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public long portalPreferencesId; |
||||||
|
public long ownerId; |
||||||
|
public int ownerType; |
||||||
|
public String preferences; |
||||||
|
} |
@ -0,0 +1,25 @@ |
|||||||
|
/** |
||||||
|
* Copyright (c) 2000-2013 Liferay, Inc. All rights reserved. |
||||||
|
* |
||||||
|
* This library 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 2.1 of the License, or (at your option) |
||||||
|
* any later version. |
||||||
|
* |
||||||
|
* This library 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. |
||||||
|
*/ |
||||||
|
|
||||||
|
package com.liferay.portal.model.impl; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author Alexander Chow |
||||||
|
*/ |
||||||
|
public class PortalPreferencesImpl extends PortalPreferencesBaseImpl { |
||||||
|
|
||||||
|
public PortalPreferencesImpl() { |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,407 @@ |
|||||||
|
/** |
||||||
|
* Copyright (c) 2000-2013 Liferay, Inc. All rights reserved. |
||||||
|
* |
||||||
|
* This library 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 2.1 of the License, or (at your option) |
||||||
|
* any later version. |
||||||
|
* |
||||||
|
* This library 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. |
||||||
|
*/ |
||||||
|
|
||||||
|
package com.liferay.portal.model.impl; |
||||||
|
|
||||||
|
import com.liferay.portal.kernel.bean.AutoEscapeBeanHandler; |
||||||
|
import com.liferay.portal.kernel.util.GetterUtil; |
||||||
|
import com.liferay.portal.kernel.util.ProxyUtil; |
||||||
|
import com.liferay.portal.kernel.util.StringBundler; |
||||||
|
import com.liferay.portal.kernel.util.StringPool; |
||||||
|
import com.liferay.portal.model.CacheModel; |
||||||
|
import com.liferay.portal.model.PortalPreferences; |
||||||
|
import com.liferay.portal.model.PortalPreferencesModel; |
||||||
|
import com.liferay.portal.service.ServiceContext; |
||||||
|
|
||||||
|
import com.liferay.portlet.expando.model.ExpandoBridge; |
||||||
|
import com.liferay.portlet.expando.util.ExpandoBridgeFactoryUtil; |
||||||
|
|
||||||
|
import java.io.Serializable; |
||||||
|
|
||||||
|
import java.sql.Types; |
||||||
|
|
||||||
|
import java.util.HashMap; |
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
/** |
||||||
|
* The base model implementation for the PortalPreferences service. Represents a row in the "PortalPreferences" database table, with each column mapped to a property of this class. |
||||||
|
* |
||||||
|
* <p> |
||||||
|
* This implementation and its corresponding interface {@link com.liferay.portal.model.PortalPreferencesModel} exist only as a container for the default property accessors generated by ServiceBuilder. Helper methods and all application logic should be put in {@link PortalPreferencesImpl}. |
||||||
|
* </p> |
||||||
|
* |
||||||
|
* @author Brian Wing Shun Chan |
||||||
|
* @see PortalPreferencesImpl |
||||||
|
* @see com.liferay.portal.model.PortalPreferences |
||||||
|
* @see com.liferay.portal.model.PortalPreferencesModel |
||||||
|
* @generated |
||||||
|
*/ |
||||||
|
public class PortalPreferencesModelImpl extends BaseModelImpl<PortalPreferences> |
||||||
|
implements PortalPreferencesModel { |
||||||
|
/* |
||||||
|
* NOTE FOR DEVELOPERS: |
||||||
|
* |
||||||
|
* Never modify or reference this class directly. All methods that expect a portal preferences model instance should use the {@link com.liferay.portal.model.PortalPreferences} interface instead. |
||||||
|
*/ |
||||||
|
public static final String TABLE_NAME = "PortalPreferences"; |
||||||
|
public static final Object[][] TABLE_COLUMNS = { |
||||||
|
{ "portalPreferencesId", Types.BIGINT }, |
||||||
|
{ "ownerId", Types.BIGINT }, |
||||||
|
{ "ownerType", Types.INTEGER }, |
||||||
|
{ "preferences", Types.CLOB } |
||||||
|
}; |
||||||
|
public static final String TABLE_SQL_CREATE = "create table PortalPreferences (portalPreferencesId LONG not null primary key,ownerId LONG,ownerType INTEGER,preferences TEXT null)"; |
||||||
|
public static final String TABLE_SQL_DROP = "drop table PortalPreferences"; |
||||||
|
public static final String ORDER_BY_JPQL = " ORDER BY portalPreferences.portalPreferencesId ASC"; |
||||||
|
public static final String ORDER_BY_SQL = " ORDER BY PortalPreferences.portalPreferencesId ASC"; |
||||||
|
public static final String DATA_SOURCE = "liferayDataSource"; |
||||||
|
public static final String SESSION_FACTORY = "liferaySessionFactory"; |
||||||
|
public static final String TX_MANAGER = "liferayTransactionManager"; |
||||||
|
public static final boolean ENTITY_CACHE_ENABLED = GetterUtil.getBoolean(com.liferay.portal.util.PropsUtil.get( |
||||||
|
"value.object.entity.cache.enabled.com.liferay.portal.model.PortalPreferences"), |
||||||
|
true); |
||||||
|
public static final boolean FINDER_CACHE_ENABLED = GetterUtil.getBoolean(com.liferay.portal.util.PropsUtil.get( |
||||||
|
"value.object.finder.cache.enabled.com.liferay.portal.model.PortalPreferences"), |
||||||
|
true); |
||||||
|
public static final boolean COLUMN_BITMASK_ENABLED = GetterUtil.getBoolean(com.liferay.portal.util.PropsUtil.get( |
||||||
|
"value.object.column.bitmask.enabled.com.liferay.portal.model.PortalPreferences"), |
||||||
|
true); |
||||||
|
public static long OWNERID_COLUMN_BITMASK = 1L; |
||||||
|
public static long OWNERTYPE_COLUMN_BITMASK = 2L; |
||||||
|
public static long PORTALPREFERENCESID_COLUMN_BITMASK = 4L; |
||||||
|
public static final long LOCK_EXPIRATION_TIME = GetterUtil.getLong(com.liferay.portal.util.PropsUtil.get( |
||||||
|
"lock.expiration.time.com.liferay.portal.model.PortalPreferences")); |
||||||
|
|
||||||
|
public PortalPreferencesModelImpl() { |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public long getPrimaryKey() { |
||||||
|
return _portalPreferencesId; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void setPrimaryKey(long primaryKey) { |
||||||
|
setPortalPreferencesId(primaryKey); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Serializable getPrimaryKeyObj() { |
||||||
|
return _portalPreferencesId; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void setPrimaryKeyObj(Serializable primaryKeyObj) { |
||||||
|
setPrimaryKey(((Long)primaryKeyObj).longValue()); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Class<?> getModelClass() { |
||||||
|
return PortalPreferences.class; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getModelClassName() { |
||||||
|
return PortalPreferences.class.getName(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Map<String, Object> getModelAttributes() { |
||||||
|
Map<String, Object> attributes = new HashMap<String, Object>(); |
||||||
|
|
||||||
|
attributes.put("portalPreferencesId", getPortalPreferencesId()); |
||||||
|
attributes.put("ownerId", getOwnerId()); |
||||||
|
attributes.put("ownerType", getOwnerType()); |
||||||
|
attributes.put("preferences", getPreferences()); |
||||||
|
|
||||||
|
return attributes; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void setModelAttributes(Map<String, Object> attributes) { |
||||||
|
Long portalPreferencesId = (Long)attributes.get("portalPreferencesId"); |
||||||
|
|
||||||
|
if (portalPreferencesId != null) { |
||||||
|
setPortalPreferencesId(portalPreferencesId); |
||||||
|
} |
||||||
|
|
||||||
|
Long ownerId = (Long)attributes.get("ownerId"); |
||||||
|
|
||||||
|
if (ownerId != null) { |
||||||
|
setOwnerId(ownerId); |
||||||
|
} |
||||||
|
|
||||||
|
Integer ownerType = (Integer)attributes.get("ownerType"); |
||||||
|
|
||||||
|
if (ownerType != null) { |
||||||
|
setOwnerType(ownerType); |
||||||
|
} |
||||||
|
|
||||||
|
String preferences = (String)attributes.get("preferences"); |
||||||
|
|
||||||
|
if (preferences != null) { |
||||||
|
setPreferences(preferences); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public long getPortalPreferencesId() { |
||||||
|
return _portalPreferencesId; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void setPortalPreferencesId(long portalPreferencesId) { |
||||||
|
_portalPreferencesId = portalPreferencesId; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public long getOwnerId() { |
||||||
|
return _ownerId; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void setOwnerId(long ownerId) { |
||||||
|
_columnBitmask |= OWNERID_COLUMN_BITMASK; |
||||||
|
|
||||||
|
if (!_setOriginalOwnerId) { |
||||||
|
_setOriginalOwnerId = true; |
||||||
|
|
||||||
|
_originalOwnerId = _ownerId; |
||||||
|
} |
||||||
|
|
||||||
|
_ownerId = ownerId; |
||||||
|
} |
||||||
|
|
||||||
|
public long getOriginalOwnerId() { |
||||||
|
return _originalOwnerId; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public int getOwnerType() { |
||||||
|
return _ownerType; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void setOwnerType(int ownerType) { |
||||||
|
_columnBitmask |= OWNERTYPE_COLUMN_BITMASK; |
||||||
|
|
||||||
|
if (!_setOriginalOwnerType) { |
||||||
|
_setOriginalOwnerType = true; |
||||||
|
|
||||||
|
_originalOwnerType = _ownerType; |
||||||
|
} |
||||||
|
|
||||||
|
_ownerType = ownerType; |
||||||
|
} |
||||||
|
|
||||||
|
public int getOriginalOwnerType() { |
||||||
|
return _originalOwnerType; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getPreferences() { |
||||||
|
if (_preferences == null) { |
||||||
|
return StringPool.BLANK; |
||||||
|
} |
||||||
|
else { |
||||||
|
return _preferences; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void setPreferences(String preferences) { |
||||||
|
_preferences = preferences; |
||||||
|
} |
||||||
|
|
||||||
|
public long getColumnBitmask() { |
||||||
|
return _columnBitmask; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public ExpandoBridge getExpandoBridge() { |
||||||
|
return ExpandoBridgeFactoryUtil.getExpandoBridge(0, |
||||||
|
PortalPreferences.class.getName(), getPrimaryKey()); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void setExpandoBridgeAttributes(ServiceContext serviceContext) { |
||||||
|
ExpandoBridge expandoBridge = getExpandoBridge(); |
||||||
|
|
||||||
|
expandoBridge.setAttributes(serviceContext); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public PortalPreferences toEscapedModel() { |
||||||
|
if (_escapedModel == null) { |
||||||
|
_escapedModel = (PortalPreferences)ProxyUtil.newProxyInstance(_classLoader, |
||||||
|
_escapedModelInterfaces, new AutoEscapeBeanHandler(this)); |
||||||
|
} |
||||||
|
|
||||||
|
return _escapedModel; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Object clone() { |
||||||
|
PortalPreferencesImpl portalPreferencesImpl = new PortalPreferencesImpl(); |
||||||
|
|
||||||
|
portalPreferencesImpl.setPortalPreferencesId(getPortalPreferencesId()); |
||||||
|
portalPreferencesImpl.setOwnerId(getOwnerId()); |
||||||
|
portalPreferencesImpl.setOwnerType(getOwnerType()); |
||||||
|
portalPreferencesImpl.setPreferences(getPreferences()); |
||||||
|
|
||||||
|
portalPreferencesImpl.resetOriginalValues(); |
||||||
|
|
||||||
|
return portalPreferencesImpl; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public int compareTo(PortalPreferences portalPreferences) { |
||||||
|
long primaryKey = portalPreferences.getPrimaryKey(); |
||||||
|
|
||||||
|
if (getPrimaryKey() < primaryKey) { |
||||||
|
return -1; |
||||||
|
} |
||||||
|
else if (getPrimaryKey() > primaryKey) { |
||||||
|
return 1; |
||||||
|
} |
||||||
|
else { |
||||||
|
return 0; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean equals(Object obj) { |
||||||
|
if (this == obj) { |
||||||
|
return true; |
||||||
|
} |
||||||
|
|
||||||
|
if (!(obj instanceof PortalPreferences)) { |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
PortalPreferences portalPreferences = (PortalPreferences)obj; |
||||||
|
|
||||||
|
long primaryKey = portalPreferences.getPrimaryKey(); |
||||||
|
|
||||||
|
if (getPrimaryKey() == primaryKey) { |
||||||
|
return true; |
||||||
|
} |
||||||
|
else { |
||||||
|
return false; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public int hashCode() { |
||||||
|
return (int)getPrimaryKey(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void resetOriginalValues() { |
||||||
|
PortalPreferencesModelImpl portalPreferencesModelImpl = this; |
||||||
|
|
||||||
|
portalPreferencesModelImpl._originalOwnerId = portalPreferencesModelImpl._ownerId; |
||||||
|
|
||||||
|
portalPreferencesModelImpl._setOriginalOwnerId = false; |
||||||
|
|
||||||
|
portalPreferencesModelImpl._originalOwnerType = portalPreferencesModelImpl._ownerType; |
||||||
|
|
||||||
|
portalPreferencesModelImpl._setOriginalOwnerType = false; |
||||||
|
|
||||||
|
portalPreferencesModelImpl._columnBitmask = 0; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public CacheModel<PortalPreferences> toCacheModel() { |
||||||
|
PortalPreferencesCacheModel portalPreferencesCacheModel = new PortalPreferencesCacheModel(); |
||||||
|
|
||||||
|
portalPreferencesCacheModel.portalPreferencesId = getPortalPreferencesId(); |
||||||
|
|
||||||
|
portalPreferencesCacheModel.ownerId = getOwnerId(); |
||||||
|
|
||||||
|
portalPreferencesCacheModel.ownerType = getOwnerType(); |
||||||
|
|
||||||
|
portalPreferencesCacheModel.preferences = getPreferences(); |
||||||
|
|
||||||
|
String preferences = portalPreferencesCacheModel.preferences; |
||||||
|
|
||||||
|
if ((preferences != null) && (preferences.length() == 0)) { |
||||||
|
portalPreferencesCacheModel.preferences = null; |
||||||
|
} |
||||||
|
|
||||||
|
return portalPreferencesCacheModel; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String toString() { |
||||||
|
StringBundler sb = new StringBundler(9); |
||||||
|
|
||||||
|
sb.append("{portalPreferencesId="); |
||||||
|
sb.append(getPortalPreferencesId()); |
||||||
|
sb.append(", ownerId="); |
||||||
|
sb.append(getOwnerId()); |
||||||
|
sb.append(", ownerType="); |
||||||
|
sb.append(getOwnerType()); |
||||||
|
sb.append(", preferences="); |
||||||
|
sb.append(getPreferences()); |
||||||
|
sb.append("}"); |
||||||
|
|
||||||
|
return sb.toString(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String toXmlString() { |
||||||
|
StringBundler sb = new StringBundler(16); |
||||||
|
|
||||||
|
sb.append("<model><model-name>"); |
||||||
|
sb.append("com.liferay.portal.model.PortalPreferences"); |
||||||
|
sb.append("</model-name>"); |
||||||
|
|
||||||
|
sb.append( |
||||||
|
"<column><column-name>portalPreferencesId</column-name><column-value><![CDATA["); |
||||||
|
sb.append(getPortalPreferencesId()); |
||||||
|
sb.append("]]></column-value></column>"); |
||||||
|
sb.append( |
||||||
|
"<column><column-name>ownerId</column-name><column-value><![CDATA["); |
||||||
|
sb.append(getOwnerId()); |
||||||
|
sb.append("]]></column-value></column>"); |
||||||
|
sb.append( |
||||||
|
"<column><column-name>ownerType</column-name><column-value><![CDATA["); |
||||||
|
sb.append(getOwnerType()); |
||||||
|
sb.append("]]></column-value></column>"); |
||||||
|
sb.append( |
||||||
|
"<column><column-name>preferences</column-name><column-value><![CDATA["); |
||||||
|
sb.append(getPreferences()); |
||||||
|
sb.append("]]></column-value></column>"); |
||||||
|
|
||||||
|
sb.append("</model>"); |
||||||
|
|
||||||
|
return sb.toString(); |
||||||
|
} |
||||||
|
|
||||||
|
private static ClassLoader _classLoader = PortalPreferences.class.getClassLoader(); |
||||||
|
private static Class<?>[] _escapedModelInterfaces = new Class[] { |
||||||
|
PortalPreferences.class |
||||||
|
}; |
||||||
|
private long _portalPreferencesId; |
||||||
|
private long _ownerId; |
||||||
|
private long _originalOwnerId; |
||||||
|
private boolean _setOriginalOwnerId; |
||||||
|
private int _ownerType; |
||||||
|
private int _originalOwnerType; |
||||||
|
private boolean _setOriginalOwnerType; |
||||||
|
private String _preferences; |
||||||
|
private long _columnBitmask; |
||||||
|
private PortalPreferences _escapedModel; |
||||||
|
} |
@ -0,0 +1,575 @@ |
|||||||
|
/** |
||||||
|
* Copyright (c) 2000-2013 Liferay, Inc. All rights reserved. |
||||||
|
* |
||||||
|
* This library 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 2.1 of the License, or (at your option) |
||||||
|
* any later version. |
||||||
|
* |
||||||
|
* This library 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. |
||||||
|
*/ |
||||||
|
|
||||||
|
package com.liferay.portal.repository.liferayrepository.model; |
||||||
|
|
||||||
|
import com.liferay.portal.kernel.exception.PortalException; |
||||||
|
import com.liferay.portal.kernel.exception.SystemException; |
||||||
|
import com.liferay.portal.kernel.lar.StagedModelType; |
||||||
|
import com.liferay.portal.kernel.log.Log; |
||||||
|
import com.liferay.portal.kernel.log.LogFactoryUtil; |
||||||
|
import com.liferay.portal.kernel.repository.model.FileEntry; |
||||||
|
import com.liferay.portal.kernel.repository.model.FileVersion; |
||||||
|
import com.liferay.portal.kernel.repository.model.Folder; |
||||||
|
import com.liferay.portal.kernel.util.ContentTypes; |
||||||
|
import com.liferay.portal.kernel.util.StringPool; |
||||||
|
import com.liferay.portal.kernel.util.Validator; |
||||||
|
import com.liferay.portal.model.Lock; |
||||||
|
import com.liferay.portal.security.auth.PrincipalThreadLocal; |
||||||
|
import com.liferay.portal.security.permission.PermissionChecker; |
||||||
|
import com.liferay.portlet.documentlibrary.model.DLFileEntry; |
||||||
|
import com.liferay.portlet.documentlibrary.model.DLFileEntryConstants; |
||||||
|
import com.liferay.portlet.documentlibrary.model.DLFileVersion; |
||||||
|
import com.liferay.portlet.documentlibrary.service.DLAppHelperLocalServiceUtil; |
||||||
|
import com.liferay.portlet.documentlibrary.service.DLFileVersionLocalServiceUtil; |
||||||
|
import com.liferay.portlet.documentlibrary.service.permission.DLFileEntryPermission; |
||||||
|
import com.liferay.portlet.expando.model.ExpandoBridge; |
||||||
|
|
||||||
|
import java.io.InputStream; |
||||||
|
import java.io.Serializable; |
||||||
|
|
||||||
|
import java.util.Date; |
||||||
|
import java.util.List; |
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author Alexander Chow |
||||||
|
*/ |
||||||
|
public class LiferayFileEntry extends LiferayModel implements FileEntry { |
||||||
|
|
||||||
|
public LiferayFileEntry(DLFileEntry dlFileEntry) { |
||||||
|
_dlFileEntry = dlFileEntry; |
||||||
|
} |
||||||
|
|
||||||
|
public LiferayFileEntry(DLFileEntry fileEntry, boolean escapedModel) { |
||||||
|
_dlFileEntry = fileEntry; |
||||||
|
_escapedModel = escapedModel; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Object clone() { |
||||||
|
LiferayFileEntry liferayFileEntry = new LiferayFileEntry( |
||||||
|
_dlFileEntry, _escapedModel); |
||||||
|
|
||||||
|
FileVersion cachedFileVersion = getCachedFileVersion(); |
||||||
|
|
||||||
|
if (cachedFileVersion != null) { |
||||||
|
liferayFileEntry.setCachedFileVersion(cachedFileVersion); |
||||||
|
} |
||||||
|
|
||||||
|
liferayFileEntry.setCompanyId(getCompanyId()); |
||||||
|
liferayFileEntry.setCreateDate(getCreateDate()); |
||||||
|
liferayFileEntry.setGroupId(getGroupId()); |
||||||
|
liferayFileEntry.setModifiedDate(getModifiedDate()); |
||||||
|
liferayFileEntry.setPrimaryKey(getPrimaryKey()); |
||||||
|
liferayFileEntry.setUserId(getUserId()); |
||||||
|
liferayFileEntry.setUserName(getUserName()); |
||||||
|
|
||||||
|
try { |
||||||
|
liferayFileEntry.setUserUuid(getUserUuid()); |
||||||
|
} |
||||||
|
catch (SystemException se) { |
||||||
|
} |
||||||
|
|
||||||
|
liferayFileEntry.setUuid(getUuid()); |
||||||
|
|
||||||
|
return liferayFileEntry; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean containsPermission( |
||||||
|
PermissionChecker permissionChecker, String actionId) |
||||||
|
throws PortalException, SystemException { |
||||||
|
|
||||||
|
return DLFileEntryPermission.contains( |
||||||
|
permissionChecker, _dlFileEntry, actionId); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean equals(Object obj) { |
||||||
|
if (this == obj) { |
||||||
|
return true; |
||||||
|
} |
||||||
|
|
||||||
|
if (!(obj instanceof LiferayFileEntry)) { |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
LiferayFileEntry liferayFileEntry = (LiferayFileEntry)obj; |
||||||
|
|
||||||
|
if (Validator.equals(_dlFileEntry, liferayFileEntry._dlFileEntry)) { |
||||||
|
return true; |
||||||
|
} |
||||||
|
|
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Map<String, Serializable> getAttributes() { |
||||||
|
ExpandoBridge expandoBridge = getExpandoBridge(); |
||||||
|
|
||||||
|
return expandoBridge.getAttributes(); |
||||||
|
} |
||||||
|
|
||||||
|
public FileVersion getCachedFileVersion() { |
||||||
|
if (_dlFileVersion == null) { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
return new LiferayFileVersion(_dlFileVersion); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public long getCompanyId() { |
||||||
|
return _dlFileEntry.getCompanyId(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public InputStream getContentStream() |
||||||
|
throws PortalException, SystemException { |
||||||
|
|
||||||
|
InputStream inputStream = _dlFileEntry.getContentStream(); |
||||||
|
|
||||||
|
try { |
||||||
|
DLAppHelperLocalServiceUtil.getFileAsStream( |
||||||
|
PrincipalThreadLocal.getUserId(), this, true); |
||||||
|
} |
||||||
|
catch (Exception e) { |
||||||
|
_log.error(e); |
||||||
|
} |
||||||
|
|
||||||
|
return inputStream; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public InputStream getContentStream(String version) |
||||||
|
throws PortalException, SystemException { |
||||||
|
|
||||||
|
InputStream inputStream = _dlFileEntry.getContentStream(version); |
||||||
|
|
||||||
|
try { |
||||||
|
DLAppHelperLocalServiceUtil.getFileAsStream( |
||||||
|
PrincipalThreadLocal.getUserId(), this, true); |
||||||
|
} |
||||||
|
catch (Exception e) { |
||||||
|
_log.error(e); |
||||||
|
} |
||||||
|
|
||||||
|
return inputStream; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Date getCreateDate() { |
||||||
|
return _dlFileEntry.getCreateDate(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getDescription() { |
||||||
|
return _dlFileEntry.getDescription(); |
||||||
|
} |
||||||
|
|
||||||
|
public DLFileEntry getDLFileEntry() { |
||||||
|
return _dlFileEntry; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public ExpandoBridge getExpandoBridge() { |
||||||
|
return _dlFileEntry.getExpandoBridge(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getExtension() { |
||||||
|
return _dlFileEntry.getExtension(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public long getFileEntryId() { |
||||||
|
return _dlFileEntry.getFileEntryId(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public FileVersion getFileVersion() |
||||||
|
throws PortalException, SystemException { |
||||||
|
|
||||||
|
DLFileVersion dlFileVersion = _dlFileVersion; |
||||||
|
|
||||||
|
if (dlFileVersion == null) { |
||||||
|
dlFileVersion = _dlFileEntry.getFileVersion(); |
||||||
|
} |
||||||
|
|
||||||
|
return new LiferayFileVersion(dlFileVersion); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public FileVersion getFileVersion(String version) |
||||||
|
throws PortalException, SystemException { |
||||||
|
|
||||||
|
return new LiferayFileVersion(_dlFileEntry.getFileVersion(version)); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public List<FileVersion> getFileVersions(int status) |
||||||
|
throws SystemException { |
||||||
|
|
||||||
|
return toFileVersions(_dlFileEntry.getFileVersions(status)); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Folder getFolder() { |
||||||
|
Folder folder = null; |
||||||
|
|
||||||
|
try { |
||||||
|
folder = new LiferayFolder(_dlFileEntry.getFolder()); |
||||||
|
} |
||||||
|
catch (Exception e) { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
return folder; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public long getFolderId() { |
||||||
|
return _dlFileEntry.getFolderId(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public long getGroupId() { |
||||||
|
return _dlFileEntry.getGroupId(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getIcon() { |
||||||
|
return _dlFileEntry.getIcon(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public FileVersion getLatestFileVersion() |
||||||
|
throws PortalException, SystemException { |
||||||
|
|
||||||
|
return new LiferayFileVersion(_dlFileEntry.getLatestFileVersion(false)); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Lock getLock() { |
||||||
|
return _dlFileEntry.getLock(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getMimeType() { |
||||||
|
return _dlFileEntry.getMimeType(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getMimeType(String version) { |
||||||
|
try { |
||||||
|
DLFileVersion dlFileVersion = |
||||||
|
DLFileVersionLocalServiceUtil.getFileVersion( |
||||||
|
_dlFileEntry.getFileEntryId(), version); |
||||||
|
|
||||||
|
return dlFileVersion.getMimeType(); |
||||||
|
} |
||||||
|
catch (Exception e) { |
||||||
|
} |
||||||
|
|
||||||
|
return ContentTypes.APPLICATION_OCTET_STREAM; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Object getModel() { |
||||||
|
return _dlFileEntry; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Class<?> getModelClass() { |
||||||
|
return LiferayFileEntry.class; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getModelClassName() { |
||||||
|
return LiferayFileEntry.class.getName(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Date getModifiedDate() { |
||||||
|
return _dlFileEntry.getModifiedDate(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public long getPrimaryKey() { |
||||||
|
return _dlFileEntry.getPrimaryKey(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Serializable getPrimaryKeyObj() { |
||||||
|
return getPrimaryKey(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public int getReadCount() { |
||||||
|
return _dlFileEntry.getReadCount(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public long getRepositoryId() { |
||||||
|
return _dlFileEntry.getRepositoryId(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public long getSize() { |
||||||
|
return _dlFileEntry.getSize(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public StagedModelType getStagedModelType() { |
||||||
|
return new StagedModelType(DLFileEntryConstants.getClassName()); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getTitle() { |
||||||
|
return _dlFileEntry.getTitle(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public long getUserId() { |
||||||
|
return _dlFileEntry.getUserId(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getUserName() { |
||||||
|
return _dlFileEntry.getUserName(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getUserUuid() throws SystemException { |
||||||
|
return _dlFileEntry.getUserUuid(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getUuid() { |
||||||
|
return _dlFileEntry.getUuid(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getVersion() { |
||||||
|
return _dlFileEntry.getVersion(); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @deprecated As of 6.2.0, replaced by {@link DLFileVersion#getUserId()} |
||||||
|
*/ |
||||||
|
@Override |
||||||
|
public long getVersionUserId() { |
||||||
|
long versionUserId = 0; |
||||||
|
|
||||||
|
try { |
||||||
|
DLFileVersion dlFileVersion = _dlFileEntry.getFileVersion(); |
||||||
|
|
||||||
|
versionUserId = dlFileVersion.getUserId(); |
||||||
|
} |
||||||
|
catch (Exception e) { |
||||||
|
_log.error(e, e); |
||||||
|
} |
||||||
|
|
||||||
|
return versionUserId; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @deprecated As of 6.2.0, replaced by {@link DLFileVersion#getUserName()} |
||||||
|
*/ |
||||||
|
@Override |
||||||
|
public String getVersionUserName() { |
||||||
|
String versionUserName = StringPool.BLANK; |
||||||
|
|
||||||
|
try { |
||||||
|
DLFileVersion dlFileVersion = _dlFileEntry.getFileVersion(); |
||||||
|
|
||||||
|
versionUserName = dlFileVersion.getUserName(); |
||||||
|
} |
||||||
|
catch (Exception e) { |
||||||
|
_log.error(e, e); |
||||||
|
} |
||||||
|
|
||||||
|
return versionUserName; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @deprecated As of 6.2.0, replaced by {@link DLFileVersion#getUserUuid()} |
||||||
|
*/ |
||||||
|
@Override |
||||||
|
public String getVersionUserUuid() { |
||||||
|
String versionUserUuid = StringPool.BLANK; |
||||||
|
|
||||||
|
try { |
||||||
|
DLFileVersion dlFileVersion = _dlFileEntry.getFileVersion(); |
||||||
|
|
||||||
|
versionUserUuid = dlFileVersion.getUserUuid(); |
||||||
|
} |
||||||
|
catch (Exception e) { |
||||||
|
_log.error(e, e); |
||||||
|
} |
||||||
|
|
||||||
|
return versionUserUuid; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public int hashCode() { |
||||||
|
return _dlFileEntry.hashCode(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean hasLock() { |
||||||
|
return _dlFileEntry.hasLock(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean isCheckedOut() { |
||||||
|
return _dlFileEntry.isCheckedOut(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean isDefaultRepository() { |
||||||
|
if (_dlFileEntry.getGroupId() == _dlFileEntry.getRepositoryId()) { |
||||||
|
return true; |
||||||
|
} |
||||||
|
else { |
||||||
|
return false; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean isEscapedModel() { |
||||||
|
return _escapedModel; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean isInTrash() { |
||||||
|
return _dlFileEntry.isInTrash(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean isInTrashContainer() { |
||||||
|
try { |
||||||
|
return _dlFileEntry.isInTrashContainer(); |
||||||
|
} |
||||||
|
catch (Exception e) { |
||||||
|
return false; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean isManualCheckInRequired() { |
||||||
|
return _dlFileEntry.isManualCheckInRequired(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean isSupportsLocking() { |
||||||
|
return true; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean isSupportsMetadata() { |
||||||
|
return true; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean isSupportsSocial() { |
||||||
|
return true; |
||||||
|
} |
||||||
|
|
||||||
|
public void setCachedFileVersion(FileVersion fileVersion) { |
||||||
|
_dlFileVersion = (DLFileVersion)fileVersion.getModel(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void setCompanyId(long companyId) { |
||||||
|
_dlFileEntry.setCompanyId(companyId); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void setCreateDate(Date date) { |
||||||
|
_dlFileEntry.setCreateDate(date); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void setGroupId(long groupId) { |
||||||
|
_dlFileEntry.setGroupId(groupId); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void setModifiedDate(Date date) { |
||||||
|
_dlFileEntry.setModifiedDate(date); |
||||||
|
} |
||||||
|
|
||||||
|
public void setPrimaryKey(long primaryKey) { |
||||||
|
_dlFileEntry.setPrimaryKey(primaryKey); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void setPrimaryKeyObj(Serializable primaryKeyObj) { |
||||||
|
setPrimaryKey(((Long)primaryKeyObj).longValue()); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void setUserId(long userId) { |
||||||
|
_dlFileEntry.setUserId(userId); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void setUserName(String userName) { |
||||||
|
_dlFileEntry.setUserName(userName); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void setUserUuid(String userUuid) { |
||||||
|
_dlFileEntry.setUserUuid(userUuid); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void setUuid(String uuid) { |
||||||
|
_dlFileEntry.setUuid(uuid); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public FileEntry toEscapedModel() { |
||||||
|
if (isEscapedModel()) { |
||||||
|
return this; |
||||||
|
} |
||||||
|
else { |
||||||
|
return new LiferayFileEntry(_dlFileEntry.toEscapedModel(), true); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String toString() { |
||||||
|
return _dlFileEntry.toString(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public FileEntry toUnescapedModel() { |
||||||
|
if (isEscapedModel()) { |
||||||
|
return new LiferayFileEntry(_dlFileEntry.toUnescapedModel(), true); |
||||||
|
} |
||||||
|
else { |
||||||
|
return this; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private static Log _log = LogFactoryUtil.getLog(LiferayFileEntry.class); |
||||||
|
|
||||||
|
private DLFileEntry _dlFileEntry; |
||||||
|
private DLFileVersion _dlFileVersion; |
||||||
|
private boolean _escapedModel; |
||||||
|
|
||||||
|
} |
@ -0,0 +1,412 @@ |
|||||||
|
/** |
||||||
|
* Copyright (c) 2000-2013 Liferay, Inc. All rights reserved. |
||||||
|
* |
||||||
|
* This library 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 2.1 of the License, or (at your option) |
||||||
|
* any later version. |
||||||
|
* |
||||||
|
* This library 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. |
||||||
|
*/ |
||||||
|
|
||||||
|
package com.liferay.portal.repository.liferayrepository.model; |
||||||
|
|
||||||
|
import com.liferay.portal.kernel.exception.PortalException; |
||||||
|
import com.liferay.portal.kernel.exception.SystemException; |
||||||
|
import com.liferay.portal.kernel.lar.StagedModelType; |
||||||
|
import com.liferay.portal.kernel.log.Log; |
||||||
|
import com.liferay.portal.kernel.log.LogFactoryUtil; |
||||||
|
import com.liferay.portal.kernel.repository.model.FileEntry; |
||||||
|
import com.liferay.portal.kernel.repository.model.FileVersion; |
||||||
|
import com.liferay.portal.kernel.util.Validator; |
||||||
|
import com.liferay.portal.security.auth.PrincipalThreadLocal; |
||||||
|
import com.liferay.portlet.documentlibrary.model.DLFileVersion; |
||||||
|
import com.liferay.portlet.documentlibrary.service.DLAppHelperLocalServiceUtil; |
||||||
|
import com.liferay.portlet.documentlibrary.service.DLFileEntryLocalServiceUtil; |
||||||
|
import com.liferay.portlet.expando.model.ExpandoBridge; |
||||||
|
|
||||||
|
import java.io.File; |
||||||
|
import java.io.InputStream; |
||||||
|
import java.io.Serializable; |
||||||
|
|
||||||
|
import java.util.Date; |
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author Alexander Chow |
||||||
|
*/ |
||||||
|
public class LiferayFileVersion extends LiferayModel implements FileVersion { |
||||||
|
|
||||||
|
public LiferayFileVersion(DLFileVersion dlFileVersion) { |
||||||
|
_dlFileVersion = dlFileVersion; |
||||||
|
} |
||||||
|
|
||||||
|
public LiferayFileVersion( |
||||||
|
DLFileVersion dlFileVersion, boolean escapedModel) { |
||||||
|
|
||||||
|
_dlFileVersion = dlFileVersion; |
||||||
|
_escapedModel = escapedModel; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Object clone() { |
||||||
|
LiferayFileVersion liferayFileVersion = new LiferayFileVersion( |
||||||
|
_dlFileVersion, _escapedModel); |
||||||
|
|
||||||
|
liferayFileVersion.setCompanyId(getCompanyId()); |
||||||
|
liferayFileVersion.setCreateDate(getCreateDate()); |
||||||
|
liferayFileVersion.setGroupId(getGroupId()); |
||||||
|
liferayFileVersion.setPrimaryKey(getPrimaryKey()); |
||||||
|
liferayFileVersion.setUserId(getUserId()); |
||||||
|
liferayFileVersion.setUserName(getUserName()); |
||||||
|
|
||||||
|
try { |
||||||
|
liferayFileVersion.setUserUuid(getUserUuid()); |
||||||
|
} |
||||||
|
catch (Exception e) { |
||||||
|
} |
||||||
|
|
||||||
|
liferayFileVersion.setUuid(getUuid()); |
||||||
|
|
||||||
|
return liferayFileVersion; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean equals(Object obj) { |
||||||
|
if (this == obj) { |
||||||
|
return true; |
||||||
|
} |
||||||
|
|
||||||
|
if (!(obj instanceof LiferayFileVersion)) { |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
LiferayFileVersion liferayFileVersion = (LiferayFileVersion)obj; |
||||||
|
|
||||||
|
if (Validator.equals( |
||||||
|
_dlFileVersion, liferayFileVersion._dlFileVersion)) { |
||||||
|
|
||||||
|
return true; |
||||||
|
} |
||||||
|
|
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Map<String, Serializable> getAttributes() { |
||||||
|
ExpandoBridge expandoBridge = _dlFileVersion.getExpandoBridge(); |
||||||
|
|
||||||
|
return expandoBridge.getAttributes(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getChangeLog() { |
||||||
|
return _dlFileVersion.getChangeLog(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public long getCompanyId() { |
||||||
|
return _dlFileVersion.getCompanyId(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public InputStream getContentStream(boolean incrementCounter) |
||||||
|
throws PortalException, SystemException { |
||||||
|
|
||||||
|
InputStream inputStream = _dlFileVersion.getContentStream( |
||||||
|
incrementCounter); |
||||||
|
|
||||||
|
try { |
||||||
|
DLAppHelperLocalServiceUtil.getFileAsStream( |
||||||
|
PrincipalThreadLocal.getUserId(), getFileEntry(), |
||||||
|
incrementCounter); |
||||||
|
} |
||||||
|
catch (Exception e) { |
||||||
|
_log.error(e, e); |
||||||
|
} |
||||||
|
|
||||||
|
return inputStream; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Date getCreateDate() { |
||||||
|
return _dlFileVersion.getCreateDate(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getDescription() { |
||||||
|
return _dlFileVersion.getDescription(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public ExpandoBridge getExpandoBridge() { |
||||||
|
return _dlFileVersion.getExpandoBridge(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getExtension() { |
||||||
|
return _dlFileVersion.getExtension(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getExtraSettings() { |
||||||
|
return _dlFileVersion.getExtraSettings(); |
||||||
|
} |
||||||
|
|
||||||
|
public File getFile(boolean incrementCounter) |
||||||
|
throws PortalException, SystemException { |
||||||
|
|
||||||
|
return DLFileEntryLocalServiceUtil.getFile( |
||||||
|
PrincipalThreadLocal.getUserId(), _dlFileVersion.getFileEntryId(), |
||||||
|
_dlFileVersion.getVersion(), incrementCounter); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public FileEntry getFileEntry() throws PortalException, SystemException { |
||||||
|
return new LiferayFileEntry(_dlFileVersion.getFileEntry()); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public long getFileEntryId() { |
||||||
|
return _dlFileVersion.getFileEntryId(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public long getFileVersionId() { |
||||||
|
return _dlFileVersion.getFileVersionId(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public long getGroupId() { |
||||||
|
return _dlFileVersion.getGroupId(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getIcon() { |
||||||
|
return _dlFileVersion.getIcon(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getMimeType() { |
||||||
|
return _dlFileVersion.getMimeType(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Object getModel() { |
||||||
|
return _dlFileVersion; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Class<?> getModelClass() { |
||||||
|
return LiferayFileVersion.class; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getModelClassName() { |
||||||
|
return LiferayFileVersion.class.getName(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Date getModifiedDate() { |
||||||
|
return _dlFileVersion.getModifiedDate(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public long getPrimaryKey() { |
||||||
|
return _dlFileVersion.getPrimaryKey(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Serializable getPrimaryKeyObj() { |
||||||
|
return getPrimaryKey(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public long getRepositoryId() { |
||||||
|
return _dlFileVersion.getRepositoryId(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public long getSize() { |
||||||
|
return _dlFileVersion.getSize(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public StagedModelType getStagedModelType() { |
||||||
|
return new StagedModelType(FileVersion.class); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public int getStatus() { |
||||||
|
return _dlFileVersion.getStatus(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public long getStatusByUserId() { |
||||||
|
return _dlFileVersion.getStatusByUserId(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getStatusByUserName() { |
||||||
|
return _dlFileVersion.getStatusByUserName(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getStatusByUserUuid() throws SystemException { |
||||||
|
return _dlFileVersion.getStatusByUserUuid(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Date getStatusDate() { |
||||||
|
return _dlFileVersion.getStatusDate(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getTitle() { |
||||||
|
return _dlFileVersion.getTitle(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public long getUserId() { |
||||||
|
return _dlFileVersion.getUserId(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getUserName() { |
||||||
|
return _dlFileVersion.getUserName(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getUserUuid() throws SystemException { |
||||||
|
return _dlFileVersion.getUserUuid(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getUuid() { |
||||||
|
return _dlFileVersion.getUuid(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getVersion() { |
||||||
|
return _dlFileVersion.getVersion(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean isApproved() { |
||||||
|
return _dlFileVersion.isApproved(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean isDefaultRepository() { |
||||||
|
if (_dlFileVersion.getGroupId() == _dlFileVersion.getRepositoryId()) { |
||||||
|
return true; |
||||||
|
} |
||||||
|
else { |
||||||
|
return false; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean isDraft() { |
||||||
|
return _dlFileVersion.isDraft(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean isEscapedModel() { |
||||||
|
return _escapedModel; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean isExpired() { |
||||||
|
return _dlFileVersion.isExpired(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean isPending() { |
||||||
|
return _dlFileVersion.isPending(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void setCompanyId(long companyId) { |
||||||
|
_dlFileVersion.setCompanyId(companyId); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void setCreateDate(Date date) { |
||||||
|
_dlFileVersion.setCreateDate(date); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void setGroupId(long groupId) { |
||||||
|
_dlFileVersion.setGroupId(groupId); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void setModifiedDate(Date date) { |
||||||
|
} |
||||||
|
|
||||||
|
public void setPrimaryKey(long primaryKey) { |
||||||
|
_dlFileVersion.setPrimaryKey(primaryKey); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void setPrimaryKeyObj(Serializable primaryKeyObj) { |
||||||
|
setPrimaryKey(((Long)primaryKeyObj).longValue()); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void setUserId(long userId) { |
||||||
|
_dlFileVersion.setUserId(userId); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void setUserName(String userName) { |
||||||
|
_dlFileVersion.setUserName(userName); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void setUserUuid(String userUuid) { |
||||||
|
_dlFileVersion.setUserUuid(userUuid); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void setUuid(String uuid) { |
||||||
|
_dlFileVersion.setUuid(uuid); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public FileVersion toEscapedModel() { |
||||||
|
if (isEscapedModel()) { |
||||||
|
return this; |
||||||
|
} |
||||||
|
else { |
||||||
|
return new LiferayFileVersion( |
||||||
|
_dlFileVersion.toEscapedModel(), true); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String toString() { |
||||||
|
return _dlFileVersion.toString(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public FileVersion toUnescapedModel() { |
||||||
|
if (isEscapedModel()) { |
||||||
|
return new LiferayFileVersion( |
||||||
|
_dlFileVersion.toUnescapedModel(), true); |
||||||
|
} |
||||||
|
else { |
||||||
|
return this; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private static Log _log = LogFactoryUtil.getLog(LiferayFileVersion.class); |
||||||
|
|
||||||
|
private DLFileVersion _dlFileVersion; |
||||||
|
private boolean _escapedModel; |
||||||
|
|
||||||
|
} |
@ -0,0 +1,418 @@ |
|||||||
|
/** |
||||||
|
* Copyright (c) 2000-2013 Liferay, Inc. All rights reserved. |
||||||
|
* |
||||||
|
* This library 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 2.1 of the License, or (at your option) |
||||||
|
* any later version. |
||||||
|
* |
||||||
|
* This library 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. |
||||||
|
*/ |
||||||
|
|
||||||
|
package com.liferay.portal.repository.liferayrepository.model; |
||||||
|
|
||||||
|
import com.liferay.portal.kernel.exception.PortalException; |
||||||
|
import com.liferay.portal.kernel.exception.SystemException; |
||||||
|
import com.liferay.portal.kernel.lar.StagedModelType; |
||||||
|
import com.liferay.portal.kernel.repository.model.Folder; |
||||||
|
import com.liferay.portal.kernel.util.Validator; |
||||||
|
import com.liferay.portal.security.permission.PermissionChecker; |
||||||
|
import com.liferay.portlet.documentlibrary.model.DLFolder; |
||||||
|
import com.liferay.portlet.documentlibrary.model.DLFolderConstants; |
||||||
|
import com.liferay.portlet.documentlibrary.service.permission.DLFolderPermission; |
||||||
|
import com.liferay.portlet.expando.model.ExpandoBridge; |
||||||
|
|
||||||
|
import java.io.Serializable; |
||||||
|
|
||||||
|
import java.util.Date; |
||||||
|
import java.util.List; |
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author Alexander Chow |
||||||
|
*/ |
||||||
|
public class LiferayFolder extends LiferayModel implements Folder { |
||||||
|
|
||||||
|
public LiferayFolder(DLFolder dlFolder) { |
||||||
|
_dlFolder = dlFolder; |
||||||
|
} |
||||||
|
|
||||||
|
public LiferayFolder(DLFolder dlFolder, boolean escapedModel) { |
||||||
|
_dlFolder = dlFolder; |
||||||
|
_escapedModel = escapedModel; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Object clone() { |
||||||
|
LiferayFolder liferayFolder = new LiferayFolder( |
||||||
|
_dlFolder, _escapedModel); |
||||||
|
|
||||||
|
liferayFolder.setCompanyId(getCompanyId()); |
||||||
|
liferayFolder.setCreateDate(getCreateDate()); |
||||||
|
liferayFolder.setGroupId(getGroupId()); |
||||||
|
liferayFolder.setModifiedDate(getModifiedDate()); |
||||||
|
liferayFolder.setPrimaryKey(getPrimaryKey()); |
||||||
|
liferayFolder.setUserId(getUserId()); |
||||||
|
liferayFolder.setUserName(getUserName()); |
||||||
|
|
||||||
|
try { |
||||||
|
liferayFolder.setUserUuid(getUserUuid()); |
||||||
|
} |
||||||
|
catch (SystemException se) { |
||||||
|
} |
||||||
|
|
||||||
|
liferayFolder.setUuid(getUuid()); |
||||||
|
|
||||||
|
return liferayFolder; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean containsPermission( |
||||||
|
PermissionChecker permissionChecker, String actionId) |
||||||
|
throws PortalException, SystemException { |
||||||
|
|
||||||
|
return DLFolderPermission.contains( |
||||||
|
permissionChecker, _dlFolder, actionId); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean equals(Object obj) { |
||||||
|
if (this == obj) { |
||||||
|
return true; |
||||||
|
} |
||||||
|
|
||||||
|
if (!(obj instanceof LiferayFolder)) { |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
LiferayFolder liferayFolder = (LiferayFolder)obj; |
||||||
|
|
||||||
|
if (Validator.equals(_dlFolder, liferayFolder._dlFolder)) { |
||||||
|
return true; |
||||||
|
} |
||||||
|
|
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public List<Long> getAncestorFolderIds() |
||||||
|
throws PortalException, SystemException { |
||||||
|
|
||||||
|
return _dlFolder.getAncestorFolderIds(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public List<Folder> getAncestors() throws PortalException, SystemException { |
||||||
|
return toFolders(_dlFolder.getAncestors()); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Map<String, Serializable> getAttributes() { |
||||||
|
ExpandoBridge expandoBridge = getExpandoBridge(); |
||||||
|
|
||||||
|
return expandoBridge.getAttributes(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public long getCompanyId() { |
||||||
|
return _dlFolder.getCompanyId(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Date getCreateDate() { |
||||||
|
return _dlFolder.getCreateDate(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getDescription() { |
||||||
|
return _dlFolder.getDescription(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public ExpandoBridge getExpandoBridge() { |
||||||
|
return _dlFolder.getExpandoBridge(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public long getFolderId() { |
||||||
|
return _dlFolder.getFolderId(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public long getGroupId() { |
||||||
|
return _dlFolder.getGroupId(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Date getLastPostDate() { |
||||||
|
return _dlFolder.getLastPostDate(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Object getModel() { |
||||||
|
return _dlFolder; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Class<?> getModelClass() { |
||||||
|
return LiferayFolder.class; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getModelClassName() { |
||||||
|
return LiferayFolder.class.getName(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Date getModifiedDate() { |
||||||
|
return _dlFolder.getModifiedDate(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getName() { |
||||||
|
return _dlFolder.getName(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Folder getParentFolder() throws PortalException, SystemException { |
||||||
|
DLFolder dlParentFolder = _dlFolder.getParentFolder(); |
||||||
|
|
||||||
|
if (dlParentFolder == null) { |
||||||
|
return null; |
||||||
|
} |
||||||
|
else { |
||||||
|
return new LiferayFolder(dlParentFolder); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public long getParentFolderId() { |
||||||
|
return _dlFolder.getParentFolderId(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public long getPrimaryKey() { |
||||||
|
return _dlFolder.getPrimaryKey(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Serializable getPrimaryKeyObj() { |
||||||
|
return getPrimaryKey(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public long getRepositoryId() { |
||||||
|
return _dlFolder.getRepositoryId(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public StagedModelType getStagedModelType() { |
||||||
|
return new StagedModelType(DLFolderConstants.getClassName()); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public long getUserId() { |
||||||
|
return _dlFolder.getUserId(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getUserName() { |
||||||
|
return _dlFolder.getUserName(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getUserUuid() throws SystemException { |
||||||
|
return _dlFolder.getUserUuid(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getUuid() { |
||||||
|
return _dlFolder.getUuid(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public int hashCode() { |
||||||
|
return _dlFolder.hashCode(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean hasInheritableLock() { |
||||||
|
return _dlFolder.hasInheritableLock(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean hasLock() { |
||||||
|
return _dlFolder.hasLock(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean isDefaultRepository() { |
||||||
|
if (_dlFolder.getGroupId() == _dlFolder.getRepositoryId()) { |
||||||
|
return true; |
||||||
|
} |
||||||
|
else { |
||||||
|
return false; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean isEscapedModel() { |
||||||
|
return _escapedModel; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean isLocked() { |
||||||
|
return _dlFolder.isLocked(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean isMountPoint() { |
||||||
|
return _dlFolder.isMountPoint(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean isRoot() { |
||||||
|
return _dlFolder.isRoot(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean isSupportsLocking() { |
||||||
|
if (isMountPoint()) { |
||||||
|
return false; |
||||||
|
} |
||||||
|
else { |
||||||
|
return true; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean isSupportsMetadata() { |
||||||
|
if (isMountPoint()) { |
||||||
|
return false; |
||||||
|
} |
||||||
|
else { |
||||||
|
return true; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean isSupportsMultipleUpload() { |
||||||
|
if (isMountPoint()) { |
||||||
|
return false; |
||||||
|
} |
||||||
|
else { |
||||||
|
return true; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean isSupportsShortcuts() { |
||||||
|
if (isMountPoint()) { |
||||||
|
return false; |
||||||
|
} |
||||||
|
else { |
||||||
|
return true; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean isSupportsSocial() { |
||||||
|
if (isMountPoint()) { |
||||||
|
return false; |
||||||
|
} |
||||||
|
else { |
||||||
|
return true; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean isSupportsSubscribing() { |
||||||
|
if (isMountPoint()) { |
||||||
|
return false; |
||||||
|
} |
||||||
|
else { |
||||||
|
return true; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void setCompanyId(long companyId) { |
||||||
|
_dlFolder.setCompanyId(companyId); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void setCreateDate(Date date) { |
||||||
|
_dlFolder.setCreateDate(date); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void setGroupId(long groupId) { |
||||||
|
_dlFolder.setGroupId(groupId); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void setModifiedDate(Date date) { |
||||||
|
_dlFolder.setModifiedDate(date); |
||||||
|
} |
||||||
|
|
||||||
|
public void setPrimaryKey(long primaryKey) { |
||||||
|
_dlFolder.setPrimaryKey(primaryKey); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void setPrimaryKeyObj(Serializable primaryKeyObj) { |
||||||
|
setPrimaryKey(((Long)primaryKeyObj).longValue()); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void setUserId(long userId) { |
||||||
|
_dlFolder.setUserId(userId); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void setUserName(String userName) { |
||||||
|
_dlFolder.setUserName(userName); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void setUserUuid(String userUuid) { |
||||||
|
_dlFolder.setUserUuid(userUuid); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void setUuid(String uuid) { |
||||||
|
_dlFolder.setUuid(uuid); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Folder toEscapedModel() { |
||||||
|
if (isEscapedModel()) { |
||||||
|
return this; |
||||||
|
} |
||||||
|
else { |
||||||
|
return new LiferayFolder(_dlFolder.toEscapedModel(), true); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String toString() { |
||||||
|
return _dlFolder.toString(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Folder toUnescapedModel() { |
||||||
|
if (isEscapedModel()) { |
||||||
|
return new LiferayFolder(_dlFolder.toUnescapedModel(), true); |
||||||
|
} |
||||||
|
else { |
||||||
|
return this; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private DLFolder _dlFolder; |
||||||
|
private boolean _escapedModel; |
||||||
|
|
||||||
|
} |
@ -0,0 +1,33 @@ |
|||||||
|
/** |
||||||
|
* Copyright (c) 2000-2013 Liferay, Inc. All rights reserved. |
||||||
|
* |
||||||
|
* This library 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 2.1 of the License, or (at your option) |
||||||
|
* any later version. |
||||||
|
* |
||||||
|
* This library 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. |
||||||
|
*/ |
||||||
|
|
||||||
|
package com.liferay.portal.repository.liferayrepository.model; |
||||||
|
|
||||||
|
import com.liferay.portal.repository.liferayrepository.util.LiferayBase; |
||||||
|
import com.liferay.portlet.expando.model.ExpandoBridge; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author Alexander Chow |
||||||
|
*/ |
||||||
|
public abstract class LiferayModel extends LiferayBase { |
||||||
|
|
||||||
|
public abstract long getCompanyId(); |
||||||
|
|
||||||
|
public abstract ExpandoBridge getExpandoBridge(); |
||||||
|
|
||||||
|
public abstract String getModelClassName(); |
||||||
|
|
||||||
|
public abstract long getPrimaryKey(); |
||||||
|
|
||||||
|
} |
@ -0,0 +1,128 @@ |
|||||||
|
/** |
||||||
|
* Copyright (c) 2000-2013 Liferay, Inc. All rights reserved. |
||||||
|
* |
||||||
|
* This library 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 2.1 of the License, or (at your option) |
||||||
|
* any later version. |
||||||
|
* |
||||||
|
* This library 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. |
||||||
|
*/ |
||||||
|
|
||||||
|
package com.liferay.portal.repository.liferayrepository.util; |
||||||
|
|
||||||
|
import com.liferay.portal.kernel.repository.model.FileEntry; |
||||||
|
import com.liferay.portal.kernel.repository.model.FileVersion; |
||||||
|
import com.liferay.portal.kernel.repository.model.Folder; |
||||||
|
import com.liferay.portal.kernel.util.UnmodifiableList; |
||||||
|
import com.liferay.portal.repository.liferayrepository.model.LiferayFileEntry; |
||||||
|
import com.liferay.portal.repository.liferayrepository.model.LiferayFileVersion; |
||||||
|
import com.liferay.portal.repository.liferayrepository.model.LiferayFolder; |
||||||
|
import com.liferay.portlet.documentlibrary.model.DLFileEntry; |
||||||
|
import com.liferay.portlet.documentlibrary.model.DLFileVersion; |
||||||
|
import com.liferay.portlet.documentlibrary.model.DLFolder; |
||||||
|
|
||||||
|
import java.util.ArrayList; |
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author Alexander Chow |
||||||
|
*/ |
||||||
|
public abstract class LiferayBase { |
||||||
|
|
||||||
|
/** |
||||||
|
* @see com.liferay.portal.portletfilerepository.PortletFileRepositoryImpl#toFileEntries |
||||||
|
*/ |
||||||
|
public List<FileEntry> toFileEntries(List<DLFileEntry> dlFileEntries) { |
||||||
|
List<FileEntry> fileEntries = new ArrayList<FileEntry>( |
||||||
|
dlFileEntries.size()); |
||||||
|
|
||||||
|
for (DLFileEntry dlFileEntry : dlFileEntries) { |
||||||
|
FileEntry fileEntry = new LiferayFileEntry(dlFileEntry); |
||||||
|
|
||||||
|
fileEntries.add(fileEntry); |
||||||
|
} |
||||||
|
|
||||||
|
if (dlFileEntries instanceof UnmodifiableList) { |
||||||
|
return new UnmodifiableList<FileEntry>(fileEntries); |
||||||
|
} |
||||||
|
else { |
||||||
|
return fileEntries; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public List<Object> toFileEntriesAndFolders( |
||||||
|
List<Object> dlFileEntriesAndDLFolders) { |
||||||
|
|
||||||
|
List<Object> fileEntriesAndFolders = new ArrayList<Object>( |
||||||
|
dlFileEntriesAndDLFolders.size()); |
||||||
|
|
||||||
|
for (Object object : dlFileEntriesAndDLFolders) { |
||||||
|
if (object instanceof DLFileEntry) { |
||||||
|
DLFileEntry dlFileEntry = (DLFileEntry)object; |
||||||
|
|
||||||
|
FileEntry fileEntry = new LiferayFileEntry(dlFileEntry); |
||||||
|
|
||||||
|
fileEntriesAndFolders.add(fileEntry); |
||||||
|
} |
||||||
|
else if (object instanceof DLFolder) { |
||||||
|
DLFolder dlFolder = (DLFolder)object; |
||||||
|
|
||||||
|
Folder folder = new LiferayFolder(dlFolder); |
||||||
|
|
||||||
|
fileEntriesAndFolders.add(folder); |
||||||
|
} |
||||||
|
else { |
||||||
|
fileEntriesAndFolders.add(object); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
if (dlFileEntriesAndDLFolders instanceof UnmodifiableList) { |
||||||
|
return new UnmodifiableList<Object>(fileEntriesAndFolders); |
||||||
|
} |
||||||
|
else { |
||||||
|
return fileEntriesAndFolders; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public List<FileVersion> toFileVersions( |
||||||
|
List<DLFileVersion> dlFileVersions) { |
||||||
|
|
||||||
|
List<FileVersion> fileVersions = new ArrayList<FileVersion>( |
||||||
|
dlFileVersions.size()); |
||||||
|
|
||||||
|
for (DLFileVersion dlFileVersion : dlFileVersions) { |
||||||
|
FileVersion fileVersion = new LiferayFileVersion(dlFileVersion); |
||||||
|
|
||||||
|
fileVersions.add(fileVersion); |
||||||
|
} |
||||||
|
|
||||||
|
if (dlFileVersions instanceof UnmodifiableList) { |
||||||
|
return new UnmodifiableList<FileVersion>(fileVersions); |
||||||
|
} |
||||||
|
else { |
||||||
|
return fileVersions; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public List<Folder> toFolders(List<DLFolder> dlFolders) { |
||||||
|
List<Folder> folders = new ArrayList<Folder>(dlFolders.size()); |
||||||
|
|
||||||
|
for (DLFolder dlFolder : dlFolders) { |
||||||
|
Folder folder = new LiferayFolder(dlFolder); |
||||||
|
|
||||||
|
folders.add(folder); |
||||||
|
} |
||||||
|
|
||||||
|
if (dlFolders instanceof UnmodifiableList) { |
||||||
|
return new UnmodifiableList<Folder>(folders); |
||||||
|
} |
||||||
|
else { |
||||||
|
return folders; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,135 @@ |
|||||||
|
/** |
||||||
|
* Copyright (c) 2000-2013 Liferay, Inc. All rights reserved. |
||||||
|
* |
||||||
|
* This library 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 2.1 of the License, or (at your option) |
||||||
|
* any later version. |
||||||
|
* |
||||||
|
* This library 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. |
||||||
|
*/ |
||||||
|
|
||||||
|
package com.liferay.portal.util; |
||||||
|
|
||||||
|
import com.liferay.portal.kernel.util.AggregateClassLoader; |
||||||
|
import com.liferay.portal.kernel.util.ClassLoaderPool; |
||||||
|
import com.liferay.portal.kernel.util.PortalClassLoaderUtil; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author Raymond Augé |
||||||
|
* @author Shuyang Zhou |
||||||
|
*/ |
||||||
|
public class ClassLoaderUtil { |
||||||
|
|
||||||
|
public static ClassLoader getAggregatePluginsClassLoader( |
||||||
|
String[] servletContextNames, boolean addContextClassLoader) { |
||||||
|
|
||||||
|
return _pacl.getAggregatePluginsClassLoader( |
||||||
|
servletContextNames, addContextClassLoader); |
||||||
|
} |
||||||
|
|
||||||
|
public static ClassLoader getClassLoader(Class<?> clazz) { |
||||||
|
return _pacl.getClassLoader(clazz); |
||||||
|
} |
||||||
|
|
||||||
|
public static ClassLoader getContextClassLoader() { |
||||||
|
return _pacl.getContextClassLoader(); |
||||||
|
} |
||||||
|
|
||||||
|
public static ClassLoader getPluginClassLoader(String servletContextName) { |
||||||
|
return _pacl.getPluginClassLoader(servletContextName); |
||||||
|
} |
||||||
|
|
||||||
|
public static ClassLoader getPortalClassLoader() { |
||||||
|
return _pacl.getPortalClassLoader(); |
||||||
|
} |
||||||
|
|
||||||
|
public static void setContextClassLoader(ClassLoader classLoader) { |
||||||
|
_pacl.setContextClassLoader(classLoader); |
||||||
|
} |
||||||
|
|
||||||
|
public static class NoPACL implements PACL { |
||||||
|
|
||||||
|
@Override |
||||||
|
public ClassLoader getAggregatePluginsClassLoader( |
||||||
|
String[] servletContextNames, boolean addContextClassLoader) { |
||||||
|
|
||||||
|
ClassLoader[] classLoaders = null; |
||||||
|
|
||||||
|
int offset = 0; |
||||||
|
|
||||||
|
if (addContextClassLoader) { |
||||||
|
classLoaders = new ClassLoader[servletContextNames.length + 1]; |
||||||
|
|
||||||
|
Thread currentThread = Thread.currentThread(); |
||||||
|
|
||||||
|
classLoaders[0] = currentThread.getContextClassLoader(); |
||||||
|
|
||||||
|
offset = 1; |
||||||
|
} |
||||||
|
else { |
||||||
|
classLoaders = new ClassLoader[servletContextNames.length]; |
||||||
|
} |
||||||
|
|
||||||
|
for (int i = 0; i < servletContextNames.length; i++) { |
||||||
|
classLoaders[offset + i] = ClassLoaderPool.getClassLoader( |
||||||
|
servletContextNames[i]); |
||||||
|
} |
||||||
|
|
||||||
|
return AggregateClassLoader.getAggregateClassLoader(classLoaders); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public ClassLoader getClassLoader(Class<?> clazz) { |
||||||
|
return clazz.getClassLoader(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public ClassLoader getContextClassLoader() { |
||||||
|
Thread currentThread = Thread.currentThread(); |
||||||
|
|
||||||
|
return currentThread.getContextClassLoader(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public ClassLoader getPluginClassLoader(String servletContextName) { |
||||||
|
return ClassLoaderPool.getClassLoader(servletContextName); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public ClassLoader getPortalClassLoader() { |
||||||
|
return PortalClassLoaderUtil.getClassLoader(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void setContextClassLoader(ClassLoader classLoader) { |
||||||
|
Thread thread = Thread.currentThread(); |
||||||
|
|
||||||
|
thread.setContextClassLoader(classLoader); |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
public static interface PACL { |
||||||
|
|
||||||
|
public ClassLoader getAggregatePluginsClassLoader( |
||||||
|
String[] servletContextNames, boolean addContextClassLoader); |
||||||
|
|
||||||
|
public ClassLoader getClassLoader(Class<?> clazz); |
||||||
|
|
||||||
|
public ClassLoader getContextClassLoader(); |
||||||
|
|
||||||
|
public ClassLoader getPluginClassLoader(String servletContextName); |
||||||
|
|
||||||
|
public ClassLoader getPortalClassLoader(); |
||||||
|
|
||||||
|
public void setContextClassLoader(ClassLoader classLoader); |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
private static PACL _pacl = new NoPACL(); |
||||||
|
|
||||||
|
} |
File diff soppresso perché troppo grande
Load Diff
@ -0,0 +1,572 @@ |
|||||||
|
/** |
||||||
|
* Copyright (c) 2000-2013 Liferay, Inc. All rights reserved. |
||||||
|
* |
||||||
|
* This library 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 2.1 of the License, or (at your option) |
||||||
|
* any later version. |
||||||
|
* |
||||||
|
* This library 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. |
||||||
|
*/ |
||||||
|
|
||||||
|
package com.liferay.portal.util; |
||||||
|
|
||||||
|
import com.liferay.portal.kernel.bean.BeanReference; |
||||||
|
import com.liferay.portal.kernel.exception.SystemException; |
||||||
|
import com.liferay.portal.kernel.util.GetterUtil; |
||||||
|
import com.liferay.portal.kernel.util.StringPool; |
||||||
|
import com.liferay.portal.kernel.util.StringUtil; |
||||||
|
import com.liferay.portal.kernel.util.Validator; |
||||||
|
import com.liferay.portal.service.PortalPreferencesLocalService; |
||||||
|
import com.liferay.portlet.PortalPreferencesWrapper; |
||||||
|
import com.liferay.portlet.PortalPreferencesWrapperCacheUtil; |
||||||
|
import com.liferay.util.ContentUtil; |
||||||
|
|
||||||
|
import java.util.Enumeration; |
||||||
|
import java.util.Properties; |
||||||
|
|
||||||
|
import javax.portlet.PortletPreferences; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author Brian Wing Shun Chan |
||||||
|
*/ |
||||||
|
public class PrefsPropsUtil { |
||||||
|
|
||||||
|
public static boolean getBoolean(long companyId, String name) |
||||||
|
throws SystemException { |
||||||
|
|
||||||
|
PortletPreferences preferences = getPreferences(companyId, true); |
||||||
|
|
||||||
|
return getBoolean(preferences, companyId, name); |
||||||
|
} |
||||||
|
|
||||||
|
public static boolean getBoolean( |
||||||
|
long companyId, String name, boolean defaultValue) |
||||||
|
throws SystemException { |
||||||
|
|
||||||
|
PortletPreferences preferences = getPreferences(companyId, true); |
||||||
|
|
||||||
|
return getBoolean(preferences, companyId, name, defaultValue); |
||||||
|
} |
||||||
|
|
||||||
|
public static boolean getBoolean( |
||||||
|
PortletPreferences preferences, long companyId, String name) { |
||||||
|
|
||||||
|
return GetterUtil.getBoolean(getString(preferences, companyId, name)); |
||||||
|
} |
||||||
|
|
||||||
|
public static boolean getBoolean( |
||||||
|
PortletPreferences preferences, long companyId, String name, |
||||||
|
boolean defaultValue) { |
||||||
|
|
||||||
|
return GetterUtil.getBoolean( |
||||||
|
getString(preferences, companyId, name, defaultValue)); |
||||||
|
} |
||||||
|
|
||||||
|
public static boolean getBoolean(String name) throws SystemException { |
||||||
|
PortletPreferences preferences = getPreferences(true); |
||||||
|
|
||||||
|
return getBoolean(preferences, 0, name); |
||||||
|
} |
||||||
|
|
||||||
|
public static boolean getBoolean(String name, boolean defaultValue) |
||||||
|
throws SystemException { |
||||||
|
|
||||||
|
PortletPreferences preferences = getPreferences(true); |
||||||
|
|
||||||
|
return getBoolean(preferences, 0, name, defaultValue); |
||||||
|
} |
||||||
|
|
||||||
|
public static String getContent(long companyId, String name) |
||||||
|
throws SystemException { |
||||||
|
|
||||||
|
PortletPreferences preferences = getPreferences(companyId, true); |
||||||
|
|
||||||
|
return getContent(preferences, companyId, name); |
||||||
|
} |
||||||
|
|
||||||
|
public static String getContent( |
||||||
|
PortletPreferences preferences, long companyId, String name) { |
||||||
|
|
||||||
|
String value = preferences.getValue(name, StringPool.BLANK); |
||||||
|
|
||||||
|
if (Validator.isNotNull(value)) { |
||||||
|
return value; |
||||||
|
} |
||||||
|
|
||||||
|
return ContentUtil.get(PropsUtil.get(name)); |
||||||
|
} |
||||||
|
|
||||||
|
public static String getContent(String name) throws SystemException { |
||||||
|
PortletPreferences preferences = getPreferences(true); |
||||||
|
|
||||||
|
return getContent(preferences, 0, name); |
||||||
|
} |
||||||
|
|
||||||
|
public static double getDouble(long companyId, String name) |
||||||
|
throws SystemException { |
||||||
|
|
||||||
|
PortletPreferences preferences = getPreferences(companyId, true); |
||||||
|
|
||||||
|
return getDouble(preferences, companyId, name); |
||||||
|
} |
||||||
|
|
||||||
|
public static double getDouble( |
||||||
|
long companyId, String name, double defaultValue) |
||||||
|
throws SystemException { |
||||||
|
|
||||||
|
PortletPreferences preferences = getPreferences(companyId, true); |
||||||
|
|
||||||
|
return getDouble(preferences, companyId, name, defaultValue); |
||||||
|
} |
||||||
|
|
||||||
|
public static double getDouble( |
||||||
|
PortletPreferences preferences, long companyId, String name) { |
||||||
|
|
||||||
|
return GetterUtil.getDouble(getString(preferences, companyId, name)); |
||||||
|
} |
||||||
|
|
||||||
|
public static double getDouble( |
||||||
|
PortletPreferences preferences, long companyId, String name, |
||||||
|
double defaultValue) { |
||||||
|
|
||||||
|
return GetterUtil.getDouble( |
||||||
|
getString(preferences, companyId, name, defaultValue)); |
||||||
|
} |
||||||
|
|
||||||
|
public static double getDouble(String name) throws SystemException { |
||||||
|
PortletPreferences preferences = getPreferences(true); |
||||||
|
|
||||||
|
return getDouble(preferences, 0, name); |
||||||
|
} |
||||||
|
|
||||||
|
public static double getDouble(String name, double defaultValue) |
||||||
|
throws SystemException { |
||||||
|
|
||||||
|
PortletPreferences preferences = getPreferences(true); |
||||||
|
|
||||||
|
return getDouble(preferences, 0, name, defaultValue); |
||||||
|
} |
||||||
|
|
||||||
|
public static int getInteger(long companyId, String name) |
||||||
|
throws SystemException { |
||||||
|
|
||||||
|
PortletPreferences preferences = getPreferences(companyId, true); |
||||||
|
|
||||||
|
return getInteger(preferences, companyId, name); |
||||||
|
} |
||||||
|
|
||||||
|
public static int getInteger(long companyId, String name, int defaultValue) |
||||||
|
throws SystemException { |
||||||
|
|
||||||
|
PortletPreferences preferences = getPreferences(companyId, true); |
||||||
|
|
||||||
|
return getInteger(preferences, companyId, name, defaultValue); |
||||||
|
} |
||||||
|
|
||||||
|
public static int getInteger( |
||||||
|
PortletPreferences preferences, long companyId, String name) { |
||||||
|
|
||||||
|
return GetterUtil.getInteger(getString(preferences, companyId, name)); |
||||||
|
} |
||||||
|
|
||||||
|
public static int getInteger( |
||||||
|
PortletPreferences preferences, long companyId, String name, |
||||||
|
int defaultValue) { |
||||||
|
|
||||||
|
return GetterUtil.getInteger( |
||||||
|
getString(preferences, companyId, name, defaultValue)); |
||||||
|
} |
||||||
|
|
||||||
|
public static int getInteger(String name) throws SystemException { |
||||||
|
PortletPreferences preferences = getPreferences(true); |
||||||
|
|
||||||
|
return getInteger(preferences, 0, name); |
||||||
|
} |
||||||
|
|
||||||
|
public static int getInteger(String name, int defaultValue) |
||||||
|
throws SystemException { |
||||||
|
|
||||||
|
PortletPreferences preferences = getPreferences(true); |
||||||
|
|
||||||
|
return getInteger(preferences, 0, name, defaultValue); |
||||||
|
} |
||||||
|
|
||||||
|
public static long getLong(long companyId, String name) |
||||||
|
throws SystemException { |
||||||
|
|
||||||
|
PortletPreferences preferences = getPreferences(companyId, true); |
||||||
|
|
||||||
|
return getLong(preferences, companyId, name); |
||||||
|
} |
||||||
|
|
||||||
|
public static long getLong(long companyId, String name, long defaultValue) |
||||||
|
throws SystemException { |
||||||
|
|
||||||
|
PortletPreferences preferences = getPreferences(companyId, true); |
||||||
|
|
||||||
|
return getLong(preferences, companyId, name, defaultValue); |
||||||
|
} |
||||||
|
|
||||||
|
public static long getLong( |
||||||
|
PortletPreferences preferences, long companyId, String name) { |
||||||
|
|
||||||
|
return GetterUtil.getLong(getString(preferences, companyId, name)); |
||||||
|
} |
||||||
|
|
||||||
|
public static long getLong( |
||||||
|
PortletPreferences preferences, long companyId, String name, |
||||||
|
long defaultValue) { |
||||||
|
|
||||||
|
return GetterUtil.getLong( |
||||||
|
getString(preferences, companyId, name, defaultValue)); |
||||||
|
} |
||||||
|
|
||||||
|
public static long getLong(String name) throws SystemException { |
||||||
|
PortletPreferences preferences = getPreferences(true); |
||||||
|
|
||||||
|
return getLong(preferences, 0, name); |
||||||
|
} |
||||||
|
|
||||||
|
public static long getLong(String name, long defaultValue) |
||||||
|
throws SystemException { |
||||||
|
|
||||||
|
PortletPreferences preferences = getPreferences(true); |
||||||
|
|
||||||
|
return getLong(preferences, 0, name, defaultValue); |
||||||
|
} |
||||||
|
|
||||||
|
public static PortletPreferences getPreferences() throws SystemException { |
||||||
|
return getPreferences(false); |
||||||
|
} |
||||||
|
|
||||||
|
public static PortletPreferences getPreferences(boolean readOnly) |
||||||
|
throws SystemException { |
||||||
|
|
||||||
|
PortalPreferencesWrapper portalPreferencesWrapper = |
||||||
|
PortalPreferencesWrapperCacheUtil.get( |
||||||
|
PortletKeys.PREFS_OWNER_ID_DEFAULT, |
||||||
|
PortletKeys.PREFS_OWNER_TYPE_COMPANY); |
||||||
|
|
||||||
|
if (portalPreferencesWrapper != null) { |
||||||
|
if (!readOnly) { |
||||||
|
portalPreferencesWrapper = portalPreferencesWrapper.clone(); |
||||||
|
} |
||||||
|
|
||||||
|
return portalPreferencesWrapper; |
||||||
|
} |
||||||
|
|
||||||
|
return _portalPreferencesLocalService.getPreferences( |
||||||
|
PortletKeys.PREFS_OWNER_ID_DEFAULT, |
||||||
|
PortletKeys.PREFS_OWNER_TYPE_COMPANY); |
||||||
|
} |
||||||
|
|
||||||
|
public static PortletPreferences getPreferences(long companyId) |
||||||
|
throws SystemException { |
||||||
|
|
||||||
|
return getPreferences(companyId, false); |
||||||
|
} |
||||||
|
|
||||||
|
public static PortletPreferences getPreferences( |
||||||
|
long companyId, boolean readOnly) |
||||||
|
throws SystemException { |
||||||
|
|
||||||
|
long ownerId = companyId; |
||||||
|
int ownerType = PortletKeys.PREFS_OWNER_TYPE_COMPANY; |
||||||
|
|
||||||
|
PortalPreferencesWrapper portalPreferencesWrapper = |
||||||
|
PortalPreferencesWrapperCacheUtil.get(ownerId, ownerType); |
||||||
|
|
||||||
|
if (portalPreferencesWrapper != null) { |
||||||
|
if (!readOnly) { |
||||||
|
portalPreferencesWrapper = portalPreferencesWrapper.clone(); |
||||||
|
} |
||||||
|
|
||||||
|
return portalPreferencesWrapper; |
||||||
|
} |
||||||
|
|
||||||
|
return _portalPreferencesLocalService.getPreferences( |
||||||
|
ownerId, ownerType); |
||||||
|
} |
||||||
|
|
||||||
|
public static Properties getProperties( |
||||||
|
PortletPreferences preferences, long companyId, String prefix, |
||||||
|
boolean removePrefix) { |
||||||
|
|
||||||
|
Properties newProperties = new Properties(); |
||||||
|
|
||||||
|
Enumeration<String> enu = preferences.getNames(); |
||||||
|
|
||||||
|
while (enu.hasMoreElements()) { |
||||||
|
String key = enu.nextElement(); |
||||||
|
|
||||||
|
if (key.startsWith(prefix)) { |
||||||
|
String value = preferences.getValue(key, StringPool.BLANK); |
||||||
|
|
||||||
|
if (removePrefix) { |
||||||
|
key = key.substring(prefix.length()); |
||||||
|
} |
||||||
|
|
||||||
|
newProperties.setProperty(key, value); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
return newProperties; |
||||||
|
} |
||||||
|
|
||||||
|
public static Properties getProperties(String prefix, boolean removePrefix) |
||||||
|
throws SystemException { |
||||||
|
|
||||||
|
PortletPreferences preferences = getPreferences(true); |
||||||
|
|
||||||
|
return getProperties(preferences, 0, prefix, removePrefix); |
||||||
|
} |
||||||
|
|
||||||
|
public static short getShort(long companyId, String name) |
||||||
|
throws SystemException { |
||||||
|
|
||||||
|
PortletPreferences preferences = getPreferences(companyId, true); |
||||||
|
|
||||||
|
return getShort(preferences, companyId, name); |
||||||
|
} |
||||||
|
|
||||||
|
public static short getShort( |
||||||
|
long companyId, String name, short defaultValue) |
||||||
|
throws SystemException { |
||||||
|
|
||||||
|
PortletPreferences preferences = getPreferences(companyId, true); |
||||||
|
|
||||||
|
return getShort(preferences, companyId, name, defaultValue); |
||||||
|
} |
||||||
|
|
||||||
|
public static short getShort( |
||||||
|
PortletPreferences preferences, long companyId, String name) { |
||||||
|
|
||||||
|
return GetterUtil.getShort(getString(preferences, companyId, name)); |
||||||
|
} |
||||||
|
|
||||||
|
public static short getShort( |
||||||
|
PortletPreferences preferences, long companyId, String name, |
||||||
|
short defaultValue) { |
||||||
|
|
||||||
|
return GetterUtil.getShort( |
||||||
|
getString(preferences, companyId, name, defaultValue)); |
||||||
|
} |
||||||
|
|
||||||
|
public static short getShort(String name) throws SystemException { |
||||||
|
PortletPreferences preferences = getPreferences(true); |
||||||
|
|
||||||
|
return getShort(preferences, 0, name); |
||||||
|
} |
||||||
|
|
||||||
|
public static short getShort(String name, short defaultValue) |
||||||
|
throws SystemException { |
||||||
|
|
||||||
|
PortletPreferences preferences = getPreferences(true); |
||||||
|
|
||||||
|
return getShort(preferences, 0, name, defaultValue); |
||||||
|
} |
||||||
|
|
||||||
|
public static String getString(long companyId, String name) |
||||||
|
throws SystemException { |
||||||
|
|
||||||
|
PortletPreferences preferences = getPreferences(companyId, true); |
||||||
|
|
||||||
|
return getString(preferences, companyId, name); |
||||||
|
} |
||||||
|
|
||||||
|
public static String getString( |
||||||
|
long companyId, String name, String defaultValue) |
||||||
|
throws SystemException { |
||||||
|
|
||||||
|
PortletPreferences preferences = getPreferences(companyId, true); |
||||||
|
|
||||||
|
return getString(preferences, companyId, name, defaultValue); |
||||||
|
} |
||||||
|
|
||||||
|
public static String getString( |
||||||
|
PortletPreferences preferences, long companyId, String name) { |
||||||
|
|
||||||
|
String value = PropsUtil.get(name); |
||||||
|
|
||||||
|
return preferences.getValue(name, value); |
||||||
|
} |
||||||
|
|
||||||
|
public static String getString( |
||||||
|
PortletPreferences preferences, long companyId, String name, |
||||||
|
boolean defaultValue) { |
||||||
|
|
||||||
|
String value = getString(preferences, companyId, name); |
||||||
|
|
||||||
|
if (value != null) { |
||||||
|
return value; |
||||||
|
} |
||||||
|
|
||||||
|
if (defaultValue) { |
||||||
|
return preferences.getValue(name, StringPool.TRUE); |
||||||
|
} |
||||||
|
|
||||||
|
return preferences.getValue(name, StringPool.FALSE); |
||||||
|
} |
||||||
|
|
||||||
|
public static String getString( |
||||||
|
PortletPreferences preferences, long companyId, String name, |
||||||
|
double defaultValue) { |
||||||
|
|
||||||
|
String value = getString(preferences, companyId, name); |
||||||
|
|
||||||
|
if (value != null) { |
||||||
|
return value; |
||||||
|
} |
||||||
|
|
||||||
|
return String.valueOf(defaultValue); |
||||||
|
} |
||||||
|
|
||||||
|
public static String getString( |
||||||
|
PortletPreferences preferences, long companyId, String name, |
||||||
|
int defaultValue) { |
||||||
|
|
||||||
|
String value = getString(preferences, companyId, name); |
||||||
|
|
||||||
|
if (value != null) { |
||||||
|
return value; |
||||||
|
} |
||||||
|
|
||||||
|
return String.valueOf(defaultValue); |
||||||
|
} |
||||||
|
|
||||||
|
public static String getString( |
||||||
|
PortletPreferences preferences, long companyId, String name, |
||||||
|
long defaultValue) { |
||||||
|
|
||||||
|
String value = getString(preferences, companyId, name); |
||||||
|
|
||||||
|
if (value != null) { |
||||||
|
return value; |
||||||
|
} |
||||||
|
|
||||||
|
return String.valueOf(defaultValue); |
||||||
|
} |
||||||
|
|
||||||
|
public static String getString( |
||||||
|
PortletPreferences preferences, long companyId, String name, |
||||||
|
short defaultValue) { |
||||||
|
|
||||||
|
String value = getString(preferences, companyId, name); |
||||||
|
|
||||||
|
if (value != null) { |
||||||
|
return value; |
||||||
|
} |
||||||
|
|
||||||
|
return String.valueOf(defaultValue); |
||||||
|
} |
||||||
|
|
||||||
|
public static String getString( |
||||||
|
PortletPreferences preferences, long companyId, String name, |
||||||
|
String defaultValue) { |
||||||
|
|
||||||
|
String value = getString(preferences, companyId, name); |
||||||
|
|
||||||
|
if (value != null) { |
||||||
|
return value; |
||||||
|
} |
||||||
|
|
||||||
|
return defaultValue; |
||||||
|
} |
||||||
|
|
||||||
|
public static String getString(String name) throws SystemException { |
||||||
|
PortletPreferences preferences = getPreferences(true); |
||||||
|
|
||||||
|
return getString(preferences, 0, name); |
||||||
|
} |
||||||
|
|
||||||
|
public static String getString(String name, String defaultValue) |
||||||
|
throws SystemException { |
||||||
|
|
||||||
|
PortletPreferences preferences = getPreferences(true); |
||||||
|
|
||||||
|
return getString(preferences, 0, name, defaultValue); |
||||||
|
} |
||||||
|
|
||||||
|
public static String[] getStringArray( |
||||||
|
long companyId, String name, String delimiter) |
||||||
|
throws SystemException { |
||||||
|
|
||||||
|
PortletPreferences preferences = getPreferences(companyId, true); |
||||||
|
|
||||||
|
return getStringArray(preferences, companyId, name, delimiter); |
||||||
|
} |
||||||
|
|
||||||
|
public static String[] getStringArray( |
||||||
|
long companyId, String name, String delimiter, |
||||||
|
String[] defaultValue) |
||||||
|
throws SystemException { |
||||||
|
|
||||||
|
PortletPreferences preferences = getPreferences(companyId, true); |
||||||
|
|
||||||
|
return getStringArray( |
||||||
|
preferences, companyId, name, delimiter, defaultValue); |
||||||
|
} |
||||||
|
|
||||||
|
public static String[] getStringArray( |
||||||
|
PortletPreferences preferences, long companyId, String name, |
||||||
|
String delimiter) { |
||||||
|
|
||||||
|
String value = PropsUtil.get(name); |
||||||
|
|
||||||
|
value = preferences.getValue(name, value); |
||||||
|
|
||||||
|
return StringUtil.split(value, delimiter); |
||||||
|
} |
||||||
|
|
||||||
|
public static String[] getStringArray( |
||||||
|
PortletPreferences preferences, long companyId, String name, |
||||||
|
String delimiter, String[] defaultValue) { |
||||||
|
|
||||||
|
String value = preferences.getValue(name, null); |
||||||
|
|
||||||
|
if (value == null) { |
||||||
|
return defaultValue; |
||||||
|
} |
||||||
|
|
||||||
|
return StringUtil.split(value, delimiter); |
||||||
|
} |
||||||
|
|
||||||
|
public static String[] getStringArray(String name, String delimiter) |
||||||
|
throws SystemException { |
||||||
|
|
||||||
|
PortletPreferences preferences = getPreferences(true); |
||||||
|
|
||||||
|
return getStringArray(preferences, 0, name, delimiter); |
||||||
|
} |
||||||
|
|
||||||
|
public static String[] getStringArray( |
||||||
|
String name, String delimiter, String[] defaultValue) |
||||||
|
throws SystemException { |
||||||
|
|
||||||
|
PortletPreferences preferences = getPreferences(true); |
||||||
|
|
||||||
|
return getStringArray(preferences, 0, name, delimiter, defaultValue); |
||||||
|
} |
||||||
|
|
||||||
|
public static String getStringFromNames(long companyId, String... names) |
||||||
|
throws SystemException { |
||||||
|
|
||||||
|
for (String name : names) { |
||||||
|
String value = getString(companyId, name); |
||||||
|
|
||||||
|
if (Validator.isNotNull(value)) { |
||||||
|
return value; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
@BeanReference(type = PortalPreferencesLocalService.class) |
||||||
|
private static PortalPreferencesLocalService _portalPreferencesLocalService; |
||||||
|
|
||||||
|
} |
@ -0,0 +1,28 @@ |
|||||||
|
/** |
||||||
|
* Copyright (c) 2000-2013 Liferay, Inc. All rights reserved. |
||||||
|
* |
||||||
|
* This library 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 2.1 of the License, or (at your option) |
||||||
|
* any later version. |
||||||
|
* |
||||||
|
* This library 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. |
||||||
|
*/ |
||||||
|
|
||||||
|
package com.liferay.portal.util; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author Brian Wing Shun Chan |
||||||
|
*/ |
||||||
|
public class PropsFiles { |
||||||
|
|
||||||
|
public static final String CAPTCHA = "captcha"; |
||||||
|
|
||||||
|
public static final String CONTENT_TYPES = "content-types"; |
||||||
|
|
||||||
|
public static final String PORTAL = "portal"; |
||||||
|
|
||||||
|
} |
@ -0,0 +1,348 @@ |
|||||||
|
/** |
||||||
|
* Copyright (c) 2000-2013 Liferay, Inc. All rights reserved. |
||||||
|
* |
||||||
|
* This library 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 2.1 of the License, or (at your option) |
||||||
|
* any later version. |
||||||
|
* |
||||||
|
* This library 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. |
||||||
|
*/ |
||||||
|
|
||||||
|
package com.liferay.portal.util; |
||||||
|
|
||||||
|
import com.liferay.portal.configuration.ConfigurationImpl; |
||||||
|
import com.liferay.portal.kernel.configuration.Configuration; |
||||||
|
import com.liferay.portal.kernel.configuration.Filter; |
||||||
|
import com.liferay.portal.kernel.log.Log; |
||||||
|
import com.liferay.portal.kernel.log.LogFactoryUtil; |
||||||
|
import com.liferay.portal.kernel.servlet.WebDirDetector; |
||||||
|
import com.liferay.portal.kernel.util.CharPool; |
||||||
|
import com.liferay.portal.kernel.util.ClassUtil; |
||||||
|
import com.liferay.portal.kernel.util.GetterUtil; |
||||||
|
import com.liferay.portal.kernel.util.PropsKeys; |
||||||
|
import com.liferay.portal.kernel.util.ReleaseInfo; |
||||||
|
import com.liferay.portal.kernel.util.ServerDetector; |
||||||
|
import com.liferay.portal.kernel.util.StringPool; |
||||||
|
import com.liferay.portal.kernel.util.StringUtil; |
||||||
|
import com.liferay.portal.kernel.util.SystemProperties; |
||||||
|
import com.liferay.portal.kernel.util.UnicodeProperties; |
||||||
|
import com.liferay.portal.model.CompanyConstants; |
||||||
|
import com.liferay.portal.security.auth.CompanyThreadLocal; |
||||||
|
|
||||||
|
import java.util.HashMap; |
||||||
|
import java.util.Map; |
||||||
|
import java.util.Properties; |
||||||
|
|
||||||
|
import javax.servlet.Servlet; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author Brian Wing Shun Chan |
||||||
|
*/ |
||||||
|
public class PropsUtil { |
||||||
|
|
||||||
|
public static void addProperties(Properties properties) { |
||||||
|
_instance._addProperties(properties); |
||||||
|
} |
||||||
|
|
||||||
|
public static void addProperties(UnicodeProperties unicodeProperties) { |
||||||
|
_instance._addProperties(unicodeProperties); |
||||||
|
} |
||||||
|
|
||||||
|
public static boolean contains(String key) { |
||||||
|
return _instance._contains(key); |
||||||
|
} |
||||||
|
|
||||||
|
public static String get(String key) { |
||||||
|
return _instance._get(key); |
||||||
|
} |
||||||
|
|
||||||
|
public static String get(String key, Filter filter) { |
||||||
|
return _instance._get(key, filter); |
||||||
|
} |
||||||
|
|
||||||
|
public static String[] getArray(String key) { |
||||||
|
return _instance._getArray(key); |
||||||
|
} |
||||||
|
|
||||||
|
public static String[] getArray(String key, Filter filter) { |
||||||
|
return _instance._getArray(key, filter); |
||||||
|
} |
||||||
|
|
||||||
|
public static Properties getProperties() { |
||||||
|
return _instance._getProperties(); |
||||||
|
} |
||||||
|
|
||||||
|
public static Properties getProperties( |
||||||
|
String prefix, boolean removePrefix) { |
||||||
|
|
||||||
|
return _instance._getProperties(prefix, removePrefix); |
||||||
|
} |
||||||
|
|
||||||
|
public static void reload() { |
||||||
|
_instance = new PropsUtil(); |
||||||
|
} |
||||||
|
|
||||||
|
public static void removeProperties(Properties properties) { |
||||||
|
_instance._removeProperties(properties); |
||||||
|
} |
||||||
|
|
||||||
|
public static void set(String key, String value) { |
||||||
|
_instance._set(key, value); |
||||||
|
} |
||||||
|
|
||||||
|
private PropsUtil() { |
||||||
|
try { |
||||||
|
|
||||||
|
// Default liferay home directory
|
||||||
|
|
||||||
|
SystemProperties.set( |
||||||
|
PropsKeys.DEFAULT_LIFERAY_HOME, _getDefaultLiferayHome()); |
||||||
|
|
||||||
|
// Global shared lib directory
|
||||||
|
|
||||||
|
String globalSharedLibDir = _getLibDir(Servlet.class); |
||||||
|
|
||||||
|
if (_log.isInfoEnabled()) { |
||||||
|
_log.info("Global shared lib directory " + globalSharedLibDir); |
||||||
|
} |
||||||
|
|
||||||
|
SystemProperties.set( |
||||||
|
PropsKeys.LIFERAY_LIB_GLOBAL_SHARED_DIR, globalSharedLibDir); |
||||||
|
|
||||||
|
// Global lib directory
|
||||||
|
|
||||||
|
String globalLibDir = _getLibDir(ReleaseInfo.class); |
||||||
|
|
||||||
|
if (_log.isInfoEnabled()) { |
||||||
|
_log.info("Global lib directory " + globalLibDir); |
||||||
|
} |
||||||
|
|
||||||
|
SystemProperties.set( |
||||||
|
PropsKeys.LIFERAY_LIB_GLOBAL_DIR, globalLibDir); |
||||||
|
|
||||||
|
// Portal lib directory
|
||||||
|
|
||||||
|
Class<?> clazz = getClass(); |
||||||
|
|
||||||
|
ClassLoader classLoader = clazz.getClassLoader(); |
||||||
|
|
||||||
|
String portalLibDir = WebDirDetector.getLibDir(classLoader); |
||||||
|
|
||||||
|
String portalLibDirProperty = System.getProperty( |
||||||
|
PropsKeys.LIFERAY_LIB_PORTAL_DIR); |
||||||
|
|
||||||
|
if (portalLibDirProperty != null) { |
||||||
|
if (!portalLibDirProperty.endsWith(StringPool.SLASH)) { |
||||||
|
portalLibDirProperty += StringPool.SLASH; |
||||||
|
} |
||||||
|
|
||||||
|
portalLibDir = portalLibDirProperty; |
||||||
|
} |
||||||
|
|
||||||
|
if (_log.isInfoEnabled()) { |
||||||
|
_log.info("Portal lib directory " + portalLibDir); |
||||||
|
} |
||||||
|
|
||||||
|
SystemProperties.set( |
||||||
|
PropsKeys.LIFERAY_LIB_PORTAL_DIR, portalLibDir); |
||||||
|
|
||||||
|
// Portal web directory
|
||||||
|
|
||||||
|
String portalWebDir = WebDirDetector.getRootDir(portalLibDir); |
||||||
|
|
||||||
|
if (_log.isDebugEnabled()) { |
||||||
|
_log.debug("Portal web directory " + portalWebDir); |
||||||
|
} |
||||||
|
|
||||||
|
SystemProperties.set( |
||||||
|
PropsKeys.LIFERAY_WEB_PORTAL_DIR, portalWebDir); |
||||||
|
|
||||||
|
// Liferay home directory
|
||||||
|
|
||||||
|
_configuration = new ConfigurationImpl( |
||||||
|
PropsUtil.class.getClassLoader(), PropsFiles.PORTAL); |
||||||
|
|
||||||
|
String liferayHome = _get(PropsKeys.LIFERAY_HOME); |
||||||
|
|
||||||
|
if (_log.isDebugEnabled()) { |
||||||
|
_log.debug("Configured Liferay home " + liferayHome); |
||||||
|
} |
||||||
|
|
||||||
|
SystemProperties.set(PropsKeys.LIFERAY_HOME, liferayHome); |
||||||
|
|
||||||
|
// Ehcache disk directory
|
||||||
|
|
||||||
|
SystemProperties.set( |
||||||
|
"ehcache.disk.store.dir", liferayHome + "/data/ehcache"); |
||||||
|
|
||||||
|
if (GetterUtil.getBoolean( |
||||||
|
SystemProperties.get("company-id-properties"))) { |
||||||
|
|
||||||
|
_configurations = new HashMap<Long, Configuration>(); |
||||||
|
} |
||||||
|
} |
||||||
|
catch (Exception e) { |
||||||
|
if (_log.isErrorEnabled()) { |
||||||
|
_log.error("Unable to initialize PropsUtil", e); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private void _addProperties(Properties properties) { |
||||||
|
_getConfiguration().addProperties(properties); |
||||||
|
} |
||||||
|
|
||||||
|
private void _addProperties(UnicodeProperties unicodeProperties) { |
||||||
|
Properties properties = new Properties(); |
||||||
|
|
||||||
|
properties.putAll(unicodeProperties); |
||||||
|
|
||||||
|
_addProperties(properties); |
||||||
|
} |
||||||
|
|
||||||
|
private boolean _contains(String key) { |
||||||
|
return _getConfiguration().contains(key); |
||||||
|
} |
||||||
|
|
||||||
|
private String _get(String key) { |
||||||
|
return _getConfiguration().get(key); |
||||||
|
} |
||||||
|
|
||||||
|
private String _get(String key, Filter filter) { |
||||||
|
return _getConfiguration().get(key, filter); |
||||||
|
} |
||||||
|
|
||||||
|
private String[] _getArray(String key) { |
||||||
|
return _getConfiguration().getArray(key); |
||||||
|
} |
||||||
|
|
||||||
|
private String[] _getArray(String key, Filter filter) { |
||||||
|
return _getConfiguration().getArray(key, filter); |
||||||
|
} |
||||||
|
|
||||||
|
private Configuration _getConfiguration() { |
||||||
|
if (_configurations == null) { |
||||||
|
return _configuration; |
||||||
|
} |
||||||
|
|
||||||
|
Long companyId = CompanyThreadLocal.getCompanyId(); |
||||||
|
|
||||||
|
if (companyId > CompanyConstants.SYSTEM) { |
||||||
|
Configuration configuration = _configurations.get(companyId); |
||||||
|
|
||||||
|
if (configuration == null) { |
||||||
|
configuration = new ConfigurationImpl( |
||||||
|
PropsUtil.class.getClassLoader(), PropsFiles.PORTAL, |
||||||
|
companyId); |
||||||
|
|
||||||
|
_configurations.put(companyId, configuration); |
||||||
|
} |
||||||
|
|
||||||
|
return configuration; |
||||||
|
} |
||||||
|
else { |
||||||
|
return _configuration; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private String _getDefaultLiferayHome() { |
||||||
|
String defaultLiferayHome = null; |
||||||
|
|
||||||
|
if (ServerDetector.isGeronimo()) { |
||||||
|
defaultLiferayHome = |
||||||
|
SystemProperties.get("org.apache.geronimo.home.dir") + "/.."; |
||||||
|
} |
||||||
|
else if (ServerDetector.isGlassfish()) { |
||||||
|
defaultLiferayHome = |
||||||
|
SystemProperties.get("com.sun.aas.installRoot") + "/.."; |
||||||
|
} |
||||||
|
else if (ServerDetector.isJBoss()) { |
||||||
|
defaultLiferayHome = SystemProperties.get("jboss.home.dir") + "/.."; |
||||||
|
} |
||||||
|
else if (ServerDetector.isJOnAS()) { |
||||||
|
defaultLiferayHome = SystemProperties.get("jonas.base") + "/.."; |
||||||
|
} |
||||||
|
else if (ServerDetector.isWebLogic()) { |
||||||
|
defaultLiferayHome = |
||||||
|
SystemProperties.get("env.DOMAIN_HOME") + "/.."; |
||||||
|
} |
||||||
|
else if (ServerDetector.isJetty()) { |
||||||
|
defaultLiferayHome = SystemProperties.get("jetty.home") + "/.."; |
||||||
|
} |
||||||
|
else if (ServerDetector.isResin()) { |
||||||
|
defaultLiferayHome = SystemProperties.get("resin.home") + "/.."; |
||||||
|
} |
||||||
|
else if (ServerDetector.isTomcat()) { |
||||||
|
defaultLiferayHome = SystemProperties.get("catalina.base") + "/.."; |
||||||
|
} |
||||||
|
else { |
||||||
|
defaultLiferayHome = SystemProperties.get("user.dir") + "/liferay"; |
||||||
|
} |
||||||
|
|
||||||
|
defaultLiferayHome = StringUtil.replace( |
||||||
|
defaultLiferayHome, CharPool.BACK_SLASH, CharPool.SLASH); |
||||||
|
|
||||||
|
defaultLiferayHome = StringUtil.replace( |
||||||
|
defaultLiferayHome, StringPool.DOUBLE_SLASH, StringPool.SLASH); |
||||||
|
|
||||||
|
if (defaultLiferayHome.endsWith("/..")) { |
||||||
|
int pos = defaultLiferayHome.lastIndexOf( |
||||||
|
CharPool.SLASH, defaultLiferayHome.length() - 4); |
||||||
|
|
||||||
|
if (pos != -1) { |
||||||
|
defaultLiferayHome = defaultLiferayHome.substring(0, pos); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
if (_log.isDebugEnabled()) { |
||||||
|
_log.debug("Default Liferay home " + defaultLiferayHome); |
||||||
|
} |
||||||
|
|
||||||
|
return defaultLiferayHome; |
||||||
|
} |
||||||
|
|
||||||
|
private String _getLibDir(Class<?> clazz) { |
||||||
|
String path = ClassUtil.getParentPath( |
||||||
|
clazz.getClassLoader(), clazz.getName()); |
||||||
|
|
||||||
|
int pos = path.lastIndexOf(".jar!"); |
||||||
|
|
||||||
|
if (pos == -1) { |
||||||
|
pos = path.lastIndexOf(".jar/"); |
||||||
|
} |
||||||
|
|
||||||
|
pos = path.lastIndexOf(CharPool.SLASH, pos); |
||||||
|
|
||||||
|
path = path.substring(0, pos + 1); |
||||||
|
|
||||||
|
return path; |
||||||
|
} |
||||||
|
|
||||||
|
private Properties _getProperties() { |
||||||
|
return _getConfiguration().getProperties(); |
||||||
|
} |
||||||
|
|
||||||
|
private Properties _getProperties(String prefix, boolean removePrefix) { |
||||||
|
return _getConfiguration().getProperties(prefix, removePrefix); |
||||||
|
} |
||||||
|
|
||||||
|
private void _removeProperties(Properties properties) { |
||||||
|
_getConfiguration().removeProperties(properties); |
||||||
|
} |
||||||
|
|
||||||
|
private void _set(String key, String value) { |
||||||
|
_getConfiguration().set(key, value); |
||||||
|
} |
||||||
|
|
||||||
|
private static Log _log = LogFactoryUtil.getLog(PropsUtil.class); |
||||||
|
|
||||||
|
private static PropsUtil _instance = new PropsUtil(); |
||||||
|
|
||||||
|
private Configuration _configuration; |
||||||
|
private Map<Long, Configuration> _configurations; |
||||||
|
|
||||||
|
} |
File diff soppresso perché troppo grande
Load Diff
@ -0,0 +1,357 @@ |
|||||||
|
/** |
||||||
|
* Copyright (c) 2000-2013 Liferay, Inc. All rights reserved. |
||||||
|
* |
||||||
|
* This library 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 2.1 of the License, or (at your option) |
||||||
|
* any later version. |
||||||
|
* |
||||||
|
* This library 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. |
||||||
|
*/ |
||||||
|
|
||||||
|
package com.liferay.portlet; |
||||||
|
|
||||||
|
import com.liferay.portal.kernel.util.ArrayUtil; |
||||||
|
import com.liferay.portal.kernel.xml.simple.Element; |
||||||
|
import com.liferay.util.xml.XMLFormatter; |
||||||
|
|
||||||
|
import java.io.IOException; |
||||||
|
import java.io.Serializable; |
||||||
|
|
||||||
|
import java.util.Collections; |
||||||
|
import java.util.Enumeration; |
||||||
|
import java.util.HashMap; |
||||||
|
import java.util.Map; |
||||||
|
import java.util.concurrent.ConcurrentHashMap; |
||||||
|
|
||||||
|
import javax.portlet.ReadOnlyException; |
||||||
|
import javax.portlet.ValidatorException; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author Alexander Chow |
||||||
|
* @author Shuyang Zhou |
||||||
|
*/ |
||||||
|
public abstract class BasePreferencesImpl implements Serializable { |
||||||
|
|
||||||
|
public BasePreferencesImpl( |
||||||
|
long ownerId, int ownerType, String xml, |
||||||
|
Map<String, Preference> preferences) { |
||||||
|
|
||||||
|
_ownerId = ownerId; |
||||||
|
_ownerType = ownerType; |
||||||
|
_originalXML = xml; |
||||||
|
_originalPreferences = preferences; |
||||||
|
} |
||||||
|
|
||||||
|
public Map<String, String[]> getMap() { |
||||||
|
Map<String, String[]> map = new HashMap<String, String[]>(); |
||||||
|
|
||||||
|
Map<String, Preference> preferences = getPreferences(); |
||||||
|
|
||||||
|
for (Map.Entry<String, Preference> entry : preferences.entrySet()) { |
||||||
|
String key = entry.getKey(); |
||||||
|
Preference preference = entry.getValue(); |
||||||
|
|
||||||
|
String[] actualValues = getActualValues(preference.getValues()); |
||||||
|
|
||||||
|
map.put(key, actualValues); |
||||||
|
} |
||||||
|
|
||||||
|
return Collections.unmodifiableMap(map); |
||||||
|
} |
||||||
|
|
||||||
|
public Enumeration<String> getNames() { |
||||||
|
Map<String, Preference> preferences = getPreferences(); |
||||||
|
|
||||||
|
return Collections.enumeration(preferences.keySet()); |
||||||
|
} |
||||||
|
|
||||||
|
public long getOwnerId() { |
||||||
|
return _ownerId; |
||||||
|
} |
||||||
|
|
||||||
|
public int getOwnerType() { |
||||||
|
return _ownerType; |
||||||
|
} |
||||||
|
|
||||||
|
public String getValue(String key, String def) { |
||||||
|
if (key == null) { |
||||||
|
throw new IllegalArgumentException(); |
||||||
|
} |
||||||
|
|
||||||
|
Map<String, Preference> preferences = getPreferences(); |
||||||
|
|
||||||
|
Preference preference = preferences.get(key); |
||||||
|
|
||||||
|
String[] values = null; |
||||||
|
|
||||||
|
if (preference != null) { |
||||||
|
values = preference.getValues(); |
||||||
|
} |
||||||
|
|
||||||
|
if (!isNull(values)) { |
||||||
|
return getActualValue(values[0]); |
||||||
|
} |
||||||
|
else { |
||||||
|
return getActualValue(def); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public String[] getValues(String key, String[] def) { |
||||||
|
if (key == null) { |
||||||
|
throw new IllegalArgumentException(); |
||||||
|
} |
||||||
|
|
||||||
|
Map<String, Preference> preferences = getPreferences(); |
||||||
|
|
||||||
|
Preference preference = preferences.get(key); |
||||||
|
|
||||||
|
String[] values = null; |
||||||
|
|
||||||
|
if (preference != null) { |
||||||
|
values = preference.getValues(); |
||||||
|
} |
||||||
|
|
||||||
|
if (!isNull(values)) { |
||||||
|
return getActualValues(values); |
||||||
|
} |
||||||
|
else { |
||||||
|
return getActualValues(def); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public boolean isReadOnly(String key) { |
||||||
|
if (key == null) { |
||||||
|
throw new IllegalArgumentException(); |
||||||
|
} |
||||||
|
|
||||||
|
Map<String, Preference> preferences = getPreferences(); |
||||||
|
|
||||||
|
Preference preference = preferences.get(key); |
||||||
|
|
||||||
|
if ((preference != null) && preference.isReadOnly()) { |
||||||
|
return true; |
||||||
|
} |
||||||
|
else { |
||||||
|
return false; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public void reset() { |
||||||
|
_modifiedPreferences = null; |
||||||
|
} |
||||||
|
|
||||||
|
public abstract void reset(String key) throws ReadOnlyException; |
||||||
|
|
||||||
|
public void setValue(String key, String value) throws ReadOnlyException { |
||||||
|
if (key == null) { |
||||||
|
throw new IllegalArgumentException(); |
||||||
|
} |
||||||
|
|
||||||
|
value = getXMLSafeValue(value); |
||||||
|
|
||||||
|
Map<String, Preference> modifiedPreferences = getModifiedPreferences(); |
||||||
|
|
||||||
|
Preference preference = modifiedPreferences.get(key); |
||||||
|
|
||||||
|
if (preference == null) { |
||||||
|
preference = new Preference(key, value); |
||||||
|
|
||||||
|
modifiedPreferences.put(key, preference); |
||||||
|
} |
||||||
|
|
||||||
|
if (preference.isReadOnly()) { |
||||||
|
throw new ReadOnlyException(key); |
||||||
|
} |
||||||
|
else { |
||||||
|
preference = (Preference)preference.clone(); |
||||||
|
|
||||||
|
modifiedPreferences.put(key, preference); |
||||||
|
|
||||||
|
preference.setValues(new String[] {value}); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public void setValues(String key, String[] values) |
||||||
|
throws ReadOnlyException { |
||||||
|
|
||||||
|
if (key == null) { |
||||||
|
throw new IllegalArgumentException(); |
||||||
|
} |
||||||
|
|
||||||
|
values = getXMLSafeValues(values); |
||||||
|
|
||||||
|
Map<String, Preference> modifiedPreferences = getModifiedPreferences(); |
||||||
|
|
||||||
|
Preference preference = modifiedPreferences.get(key); |
||||||
|
|
||||||
|
if (preference == null) { |
||||||
|
preference = new Preference(key, values); |
||||||
|
|
||||||
|
modifiedPreferences.put(key, preference); |
||||||
|
} |
||||||
|
|
||||||
|
if (preference.isReadOnly()) { |
||||||
|
throw new ReadOnlyException(key); |
||||||
|
} |
||||||
|
else { |
||||||
|
preference = (Preference)preference.clone(); |
||||||
|
|
||||||
|
modifiedPreferences.put(key, preference); |
||||||
|
|
||||||
|
preference.setValues(values); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public int size() { |
||||||
|
Map<String, Preference> preferences = getPreferences(); |
||||||
|
|
||||||
|
return preferences.size(); |
||||||
|
} |
||||||
|
|
||||||
|
public abstract void store() throws IOException, ValidatorException; |
||||||
|
|
||||||
|
protected String getActualValue(String value) { |
||||||
|
if ((value == null) || value.equals(_NULL_VALUE)) { |
||||||
|
return null; |
||||||
|
} |
||||||
|
else { |
||||||
|
return XMLFormatter.fromCompactSafe(value); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
protected String[] getActualValues(String[] values) { |
||||||
|
if (values == null) { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
if (values.length == 1) { |
||||||
|
String actualValue = getActualValue(values[0]); |
||||||
|
|
||||||
|
if (actualValue == null) { |
||||||
|
return null; |
||||||
|
} |
||||||
|
else { |
||||||
|
return new String[] {actualValue}; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
String[] actualValues = new String[values.length]; |
||||||
|
|
||||||
|
for (int i = 0; i < actualValues.length; i++) { |
||||||
|
actualValues[i] = getActualValue(values[i]); |
||||||
|
} |
||||||
|
|
||||||
|
return actualValues; |
||||||
|
} |
||||||
|
|
||||||
|
protected Map<String, Preference> getModifiedPreferences() { |
||||||
|
if (_modifiedPreferences == null) { |
||||||
|
_modifiedPreferences = new ConcurrentHashMap<String, Preference>( |
||||||
|
_originalPreferences); |
||||||
|
} |
||||||
|
|
||||||
|
return _modifiedPreferences; |
||||||
|
} |
||||||
|
|
||||||
|
protected Map<String, Preference> getOriginalPreferences() { |
||||||
|
return _originalPreferences; |
||||||
|
} |
||||||
|
|
||||||
|
protected String getOriginalXML() { |
||||||
|
return _originalXML; |
||||||
|
} |
||||||
|
|
||||||
|
protected Map<String, Preference> getPreferences() { |
||||||
|
if (_modifiedPreferences != null) { |
||||||
|
return _modifiedPreferences; |
||||||
|
} |
||||||
|
|
||||||
|
return _originalPreferences; |
||||||
|
} |
||||||
|
|
||||||
|
protected String getXMLSafeValue(String value) { |
||||||
|
if (value == null) { |
||||||
|
return _NULL_VALUE; |
||||||
|
} |
||||||
|
else { |
||||||
|
return XMLFormatter.toCompactSafe(value); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
protected String[] getXMLSafeValues(String[] values) { |
||||||
|
if (values == null) { |
||||||
|
return new String[] {_NULL_VALUE}; |
||||||
|
} |
||||||
|
|
||||||
|
String[] xmlSafeValues = new String[values.length]; |
||||||
|
|
||||||
|
for (int i = 0; i < xmlSafeValues.length; i++) { |
||||||
|
xmlSafeValues[i] = getXMLSafeValue(values[i]); |
||||||
|
} |
||||||
|
|
||||||
|
return xmlSafeValues; |
||||||
|
} |
||||||
|
|
||||||
|
protected boolean isNull(String[] values) { |
||||||
|
if (ArrayUtil.isEmpty(values) || |
||||||
|
((values.length == 1) && (getActualValue(values[0]) == null))) { |
||||||
|
|
||||||
|
return true; |
||||||
|
} |
||||||
|
|
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
protected void setOriginalPreferences( |
||||||
|
Map<String, Preference> originalPreferences) { |
||||||
|
|
||||||
|
_originalPreferences = originalPreferences; |
||||||
|
} |
||||||
|
|
||||||
|
protected void setOriginalXML(String originalXML) { |
||||||
|
_originalXML = originalXML; |
||||||
|
} |
||||||
|
|
||||||
|
protected String toXML() { |
||||||
|
if ((_modifiedPreferences == null) && (_originalXML != null)) { |
||||||
|
return _originalXML; |
||||||
|
} |
||||||
|
|
||||||
|
Map<String, Preference> preferences = getPreferences(); |
||||||
|
|
||||||
|
Element portletPreferencesElement = new Element( |
||||||
|
"portlet-preferences", false); |
||||||
|
|
||||||
|
for (Map.Entry<String, Preference> entry : preferences.entrySet()) { |
||||||
|
Preference preference = entry.getValue(); |
||||||
|
|
||||||
|
Element preferenceElement = portletPreferencesElement.addElement( |
||||||
|
"preference"); |
||||||
|
|
||||||
|
preferenceElement.addElement("name", preference.getName()); |
||||||
|
|
||||||
|
for (String value : preference.getValues()) { |
||||||
|
preferenceElement.addElement("value", value); |
||||||
|
} |
||||||
|
|
||||||
|
if (preference.isReadOnly()) { |
||||||
|
preferenceElement.addElement("read-only", Boolean.TRUE); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
return portletPreferencesElement.toXMLString(); |
||||||
|
} |
||||||
|
|
||||||
|
private static final String _NULL_VALUE = "NULL_VALUE"; |
||||||
|
|
||||||
|
private Map<String, Preference> _modifiedPreferences; |
||||||
|
private Map<String, Preference> _originalPreferences; |
||||||
|
private String _originalXML; |
||||||
|
private long _ownerId; |
||||||
|
private int _ownerType; |
||||||
|
|
||||||
|
} |
@ -0,0 +1,414 @@ |
|||||||
|
/** |
||||||
|
* Copyright (c) 2000-2013 Liferay, Inc. All rights reserved. |
||||||
|
* |
||||||
|
* This library 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 2.1 of the License, or (at your option) |
||||||
|
* any later version. |
||||||
|
* |
||||||
|
* This library 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. |
||||||
|
*/ |
||||||
|
|
||||||
|
package com.liferay.portlet; |
||||||
|
|
||||||
|
import com.liferay.portal.kernel.dao.orm.LockMode; |
||||||
|
import com.liferay.portal.kernel.dao.orm.Session; |
||||||
|
import com.liferay.portal.kernel.exception.PortalException; |
||||||
|
import com.liferay.portal.kernel.exception.SystemException; |
||||||
|
import com.liferay.portal.kernel.log.Log; |
||||||
|
import com.liferay.portal.kernel.log.LogFactoryUtil; |
||||||
|
import com.liferay.portal.kernel.transaction.TransactionAttribute; |
||||||
|
import com.liferay.portal.kernel.transaction.TransactionInvokerUtil; |
||||||
|
import com.liferay.portal.kernel.util.HashUtil; |
||||||
|
import com.liferay.portal.kernel.util.StringPool; |
||||||
|
import com.liferay.portal.kernel.util.Validator; |
||||||
|
import com.liferay.portal.service.PortalPreferencesLocalServiceUtil; |
||||||
|
import com.liferay.portal.service.persistence.PortalPreferencesPersistence; |
||||||
|
import com.liferay.portal.service.persistence.PortalPreferencesUtil; |
||||||
|
|
||||||
|
import java.io.IOException; |
||||||
|
import java.io.Serializable; |
||||||
|
|
||||||
|
import java.util.Arrays; |
||||||
|
import java.util.Collections; |
||||||
|
import java.util.ConcurrentModificationException; |
||||||
|
import java.util.HashMap; |
||||||
|
import java.util.Map; |
||||||
|
import java.util.concurrent.Callable; |
||||||
|
|
||||||
|
import javax.portlet.ReadOnlyException; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author Brian Wing Shun Chan |
||||||
|
* @author Alexander Chow |
||||||
|
*/ |
||||||
|
public class PortalPreferencesImpl |
||||||
|
extends BasePreferencesImpl |
||||||
|
implements Cloneable, PortalPreferences, Serializable { |
||||||
|
|
||||||
|
public static final TransactionAttribute TRANSACTION_ATTRIBUTE; |
||||||
|
|
||||||
|
static { |
||||||
|
TransactionAttribute.Builder builder = |
||||||
|
new TransactionAttribute.Builder(); |
||||||
|
|
||||||
|
builder.setRollbackForClasses( |
||||||
|
PortalException.class, SystemException.class); |
||||||
|
|
||||||
|
TRANSACTION_ATTRIBUTE = builder.build(); |
||||||
|
} |
||||||
|
|
||||||
|
public PortalPreferencesImpl() { |
||||||
|
this(0, 0, null, Collections.<String, Preference>emptyMap(), false); |
||||||
|
} |
||||||
|
|
||||||
|
public PortalPreferencesImpl( |
||||||
|
long ownerId, int ownerType, String xml, |
||||||
|
Map<String, Preference> preferences, boolean signedIn) { |
||||||
|
|
||||||
|
super(ownerId, ownerType, xml, preferences); |
||||||
|
|
||||||
|
_signedIn = signedIn; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public PortalPreferencesImpl clone() { |
||||||
|
return new PortalPreferencesImpl( |
||||||
|
getOwnerId(), getOwnerType(), getOriginalXML(), |
||||||
|
new HashMap<String, Preference>( |
||||||
|
getOriginalPreferences()), isSignedIn()); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean equals(Object obj) { |
||||||
|
if (this == obj) { |
||||||
|
return true; |
||||||
|
} |
||||||
|
|
||||||
|
if (!(obj instanceof PortalPreferencesImpl)) { |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
PortalPreferencesImpl portalPreferences = (PortalPreferencesImpl)obj; |
||||||
|
|
||||||
|
if ((getOwnerId() == portalPreferences.getOwnerId()) && |
||||||
|
(getOwnerType() == portalPreferences.getOwnerType()) && |
||||||
|
getPreferences().equals(portalPreferences.getPreferences())) { |
||||||
|
|
||||||
|
return true; |
||||||
|
} |
||||||
|
else { |
||||||
|
return false; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public long getUserId() { |
||||||
|
return _userId; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getValue(String namespace, String key) { |
||||||
|
return getValue(namespace, key, null); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getValue(String namespace, String key, String defaultValue) { |
||||||
|
key = _encodeKey(namespace, key); |
||||||
|
|
||||||
|
return super.getValue(key, defaultValue); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String[] getValues(String namespace, String key) { |
||||||
|
return getValues(namespace, key, null); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String[] getValues( |
||||||
|
String namespace, String key, String[] defaultValue) { |
||||||
|
|
||||||
|
key = _encodeKey(namespace, key); |
||||||
|
|
||||||
|
return super.getValues(key, defaultValue); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public int hashCode() { |
||||||
|
int hashCode = HashUtil.hash(0, getOwnerId()); |
||||||
|
|
||||||
|
hashCode = HashUtil.hash(hashCode, getOwnerType()); |
||||||
|
hashCode = HashUtil.hash(hashCode, getPreferences()); |
||||||
|
|
||||||
|
return hashCode; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean isSignedIn() { |
||||||
|
return _signedIn; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void reset(final String key) throws ReadOnlyException { |
||||||
|
if (isReadOnly(key)) { |
||||||
|
throw new ReadOnlyException(key); |
||||||
|
} |
||||||
|
|
||||||
|
try { |
||||||
|
validateStore( |
||||||
|
new Callable<Void>() { |
||||||
|
|
||||||
|
@Override |
||||||
|
public Void call() { |
||||||
|
Map<String, Preference> modifiedPreferences = |
||||||
|
getModifiedPreferences(); |
||||||
|
|
||||||
|
modifiedPreferences.remove(key); |
||||||
|
|
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
}, key); |
||||||
|
} |
||||||
|
catch (ConcurrentModificationException cme) { |
||||||
|
throw cme; |
||||||
|
} |
||||||
|
catch (Throwable t) { |
||||||
|
_log.error(t, t); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void resetValues(String namespace) { |
||||||
|
Map<String, Preference> preferences = getPreferences(); |
||||||
|
|
||||||
|
try { |
||||||
|
for (Map.Entry<String, Preference> entry : preferences.entrySet()) { |
||||||
|
String key = entry.getKey(); |
||||||
|
|
||||||
|
if (key.startsWith(namespace) && !isReadOnly(key)) { |
||||||
|
reset(key); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
catch (ConcurrentModificationException cme) { |
||||||
|
throw cme; |
||||||
|
} |
||||||
|
catch (Exception e) { |
||||||
|
_log.error(e, e); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void setSignedIn(boolean signedIn) { |
||||||
|
_signedIn = signedIn; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void setUserId(long userId) { |
||||||
|
_userId = userId; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void setValue( |
||||||
|
final String namespace, final String key, final String value) { |
||||||
|
|
||||||
|
if (Validator.isNull(key) || key.equals(_RANDOM_KEY)) { |
||||||
|
return; |
||||||
|
} |
||||||
|
|
||||||
|
try { |
||||||
|
Callable<Void> callable = new Callable<Void>() { |
||||||
|
|
||||||
|
@Override |
||||||
|
public Void call() throws ReadOnlyException { |
||||||
|
String encodedKey = _encodeKey(namespace, key); |
||||||
|
|
||||||
|
if (value == null) { |
||||||
|
reset(encodedKey); |
||||||
|
} |
||||||
|
else { |
||||||
|
PortalPreferencesImpl.super.setValue(encodedKey, value); |
||||||
|
} |
||||||
|
|
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
}; |
||||||
|
|
||||||
|
if (_signedIn) { |
||||||
|
validateStore(callable, _encodeKey(namespace, key)); |
||||||
|
} |
||||||
|
else { |
||||||
|
callable.call(); |
||||||
|
} |
||||||
|
} |
||||||
|
catch (ConcurrentModificationException cme) { |
||||||
|
throw cme; |
||||||
|
} |
||||||
|
catch (Throwable t) { |
||||||
|
_log.error(t, t); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void setValues( |
||||||
|
final String namespace, final String key, final String[] values) { |
||||||
|
|
||||||
|
if (Validator.isNull(key) || key.equals(_RANDOM_KEY)) { |
||||||
|
return; |
||||||
|
} |
||||||
|
|
||||||
|
try { |
||||||
|
Callable<Void> callable = new Callable<Void>() { |
||||||
|
|
||||||
|
@Override |
||||||
|
public Void call() throws ReadOnlyException { |
||||||
|
String encodedKey = _encodeKey(namespace, key); |
||||||
|
|
||||||
|
if (values == null) { |
||||||
|
reset(encodedKey); |
||||||
|
} |
||||||
|
else { |
||||||
|
PortalPreferencesImpl.super.setValues( |
||||||
|
encodedKey, values); |
||||||
|
} |
||||||
|
|
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
}; |
||||||
|
|
||||||
|
if (_signedIn) { |
||||||
|
validateStore(callable, _encodeKey(namespace, key)); |
||||||
|
} |
||||||
|
else { |
||||||
|
callable.call(); |
||||||
|
} |
||||||
|
} |
||||||
|
catch (ConcurrentModificationException cme) { |
||||||
|
throw cme; |
||||||
|
} |
||||||
|
catch (Throwable t) { |
||||||
|
_log.error(t, t); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private Callable<Boolean> _createValidateCallable( |
||||||
|
final String[] originalValues, final String key) { |
||||||
|
|
||||||
|
return new Callable<Boolean>() { |
||||||
|
|
||||||
|
@Override |
||||||
|
public Boolean call() throws Exception { |
||||||
|
com.liferay.portal.model.PortalPreferences |
||||||
|
preferences = PortalPreferencesUtil.fetchByO_O( |
||||||
|
getOwnerId(), getOwnerType(), false); |
||||||
|
|
||||||
|
PortalPreferencesPersistence portalPreferencesPersistence = |
||||||
|
PortalPreferencesUtil.getPersistence(); |
||||||
|
|
||||||
|
Session session = |
||||||
|
portalPreferencesPersistence.getCurrentSession(); |
||||||
|
|
||||||
|
session.evict(preferences); |
||||||
|
|
||||||
|
preferences = (com.liferay.portal.model.PortalPreferences) |
||||||
|
session.get( |
||||||
|
com.liferay.portal.model.impl. |
||||||
|
PortalPreferencesImpl.class, |
||||||
|
preferences.getPrimaryKey(), LockMode.UPGRADE); |
||||||
|
|
||||||
|
PortalPreferencesImpl portalPreferencesImpl = |
||||||
|
(PortalPreferencesImpl) |
||||||
|
PortletPreferencesFactoryUtil.fromXML( |
||||||
|
getOwnerId(), getOwnerType(), |
||||||
|
preferences.getPreferences()); |
||||||
|
|
||||||
|
String originalXML = getOriginalXML(); |
||||||
|
|
||||||
|
if (originalXML.equals(preferences.getPreferences())) { |
||||||
|
store(); |
||||||
|
|
||||||
|
return true; |
||||||
|
} |
||||||
|
|
||||||
|
if (!Arrays.equals( |
||||||
|
originalValues, |
||||||
|
portalPreferencesImpl.getValues(key, (String[])null))) { |
||||||
|
|
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
reset(); |
||||||
|
|
||||||
|
setOriginalPreferences( |
||||||
|
portalPreferencesImpl.getOriginalPreferences()); |
||||||
|
|
||||||
|
setOriginalXML(preferences.getPreferences()); |
||||||
|
|
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
}; |
||||||
|
} |
||||||
|
|
||||||
|
protected void validateStore(final Callable<?> callable, final String key) |
||||||
|
throws Throwable { |
||||||
|
|
||||||
|
while (true) { |
||||||
|
String[] originalValues = super.getValues(key, null); |
||||||
|
|
||||||
|
callable.call(); |
||||||
|
|
||||||
|
Boolean result = TransactionInvokerUtil.invoke( |
||||||
|
TRANSACTION_ATTRIBUTE, |
||||||
|
_createValidateCallable(originalValues, key)); |
||||||
|
|
||||||
|
if (result == null) { |
||||||
|
continue; |
||||||
|
} |
||||||
|
|
||||||
|
if (!result) { |
||||||
|
PortalPreferencesWrapperCacheUtil.remove( |
||||||
|
getOwnerId(), getOwnerType()); |
||||||
|
|
||||||
|
throw new ConcurrentModificationException(); |
||||||
|
} |
||||||
|
|
||||||
|
break; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void store() throws IOException { |
||||||
|
try { |
||||||
|
PortalPreferencesLocalServiceUtil.updatePreferences( |
||||||
|
getOwnerId(), getOwnerType(), this); |
||||||
|
} |
||||||
|
catch (SystemException se) { |
||||||
|
throw new IOException(se.getMessage()); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private String _encodeKey(String namespace, String key) { |
||||||
|
if (Validator.isNull(namespace)) { |
||||||
|
return key; |
||||||
|
} |
||||||
|
else { |
||||||
|
return namespace.concat(StringPool.POUND).concat(key); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private static final String _RANDOM_KEY = "r"; |
||||||
|
|
||||||
|
private static Log _log = LogFactoryUtil.getLog( |
||||||
|
PortalPreferencesImpl.class); |
||||||
|
|
||||||
|
private boolean _signedIn; |
||||||
|
private long _userId; |
||||||
|
|
||||||
|
} |
@ -0,0 +1,96 @@ |
|||||||
|
/** |
||||||
|
* Copyright (c) 2000-2013 Liferay, Inc. All rights reserved. |
||||||
|
* |
||||||
|
* This library 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 2.1 of the License, or (at your option) |
||||||
|
* any later version. |
||||||
|
* |
||||||
|
* This library 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. |
||||||
|
*/ |
||||||
|
|
||||||
|
package com.liferay.portlet; |
||||||
|
|
||||||
|
import java.io.IOException; |
||||||
|
import java.io.Serializable; |
||||||
|
|
||||||
|
import java.util.Enumeration; |
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
import javax.portlet.PortletPreferences; |
||||||
|
import javax.portlet.ReadOnlyException; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author Alexander Chow |
||||||
|
*/ |
||||||
|
public class PortalPreferencesWrapper |
||||||
|
implements Cloneable, PortletPreferences, Serializable { |
||||||
|
|
||||||
|
public PortalPreferencesWrapper( |
||||||
|
PortalPreferencesImpl portalPreferencesImpl) { |
||||||
|
|
||||||
|
_portalPreferencesImpl = portalPreferencesImpl; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public PortalPreferencesWrapper clone() { |
||||||
|
return new PortalPreferencesWrapper(_portalPreferencesImpl.clone()); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Map<String, String[]> getMap() { |
||||||
|
return _portalPreferencesImpl.getMap(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Enumeration<String> getNames() { |
||||||
|
return _portalPreferencesImpl.getNames(); |
||||||
|
} |
||||||
|
|
||||||
|
public PortalPreferencesImpl getPortalPreferencesImpl() { |
||||||
|
return _portalPreferencesImpl; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getValue(String key, String def) { |
||||||
|
return _portalPreferencesImpl.getValue(null, key, def); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String[] getValues(String key, String[] def) { |
||||||
|
return _portalPreferencesImpl.getValues(null, key, def); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean isReadOnly(String key) { |
||||||
|
return _portalPreferencesImpl.isReadOnly(key); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void reset(String key) throws ReadOnlyException { |
||||||
|
_portalPreferencesImpl.reset(key); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void setValue(String key, String value) throws ReadOnlyException { |
||||||
|
_portalPreferencesImpl.setValue(key, value); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void setValues(String key, String[] values) |
||||||
|
throws ReadOnlyException { |
||||||
|
|
||||||
|
_portalPreferencesImpl.setValues(key, values); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void store() throws IOException { |
||||||
|
_portalPreferencesImpl.store(); |
||||||
|
} |
||||||
|
|
||||||
|
private PortalPreferencesImpl _portalPreferencesImpl; |
||||||
|
|
||||||
|
} |
@ -0,0 +1,58 @@ |
|||||||
|
/** |
||||||
|
* Copyright (c) 2000-2013 Liferay, Inc. All rights reserved. |
||||||
|
* |
||||||
|
* This library 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 2.1 of the License, or (at your option) |
||||||
|
* any later version. |
||||||
|
* |
||||||
|
* This library 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. |
||||||
|
*/ |
||||||
|
|
||||||
|
package com.liferay.portlet; |
||||||
|
|
||||||
|
import com.liferay.portal.kernel.cache.MultiVMPoolUtil; |
||||||
|
import com.liferay.portal.kernel.cache.PortalCache; |
||||||
|
import com.liferay.portal.kernel.util.StringUtil; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author Shuyang Zhou |
||||||
|
*/ |
||||||
|
public class PortalPreferencesWrapperCacheUtil { |
||||||
|
|
||||||
|
public static final String CACHE_NAME = |
||||||
|
PortalPreferencesWrapperCacheUtil.class.getName(); |
||||||
|
|
||||||
|
public static PortalPreferencesWrapper get(long ownerId, int ownerType) { |
||||||
|
String cacheKey = StringUtil.toHexString(ownerId).concat( |
||||||
|
StringUtil.toHexString(ownerType)); |
||||||
|
|
||||||
|
return _portalPreferencesWrapperPortalCache.get(cacheKey); |
||||||
|
} |
||||||
|
|
||||||
|
public static void put( |
||||||
|
long ownerId, int ownerType, |
||||||
|
PortalPreferencesWrapper portalPreferencesWrapper) { |
||||||
|
|
||||||
|
String cacheKey = StringUtil.toHexString(ownerId).concat( |
||||||
|
StringUtil.toHexString(ownerType)); |
||||||
|
|
||||||
|
_portalPreferencesWrapperPortalCache.put( |
||||||
|
cacheKey, portalPreferencesWrapper); |
||||||
|
} |
||||||
|
|
||||||
|
public static void remove(long ownerId, int ownerType) { |
||||||
|
String cacheKey = StringUtil.toHexString(ownerId).concat( |
||||||
|
StringUtil.toHexString(ownerType)); |
||||||
|
|
||||||
|
_portalPreferencesWrapperPortalCache.remove(cacheKey); |
||||||
|
} |
||||||
|
|
||||||
|
private static PortalCache<String, PortalPreferencesWrapper> |
||||||
|
_portalPreferencesWrapperPortalCache = MultiVMPoolUtil.getCache( |
||||||
|
CACHE_NAME); |
||||||
|
|
||||||
|
} |
@ -0,0 +1,97 @@ |
|||||||
|
/** |
||||||
|
* Copyright (c) 2000-2013 Liferay, Inc. All rights reserved. |
||||||
|
* |
||||||
|
* This library 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 2.1 of the License, or (at your option) |
||||||
|
* any later version. |
||||||
|
* |
||||||
|
* This library 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. |
||||||
|
*/ |
||||||
|
|
||||||
|
package com.liferay.portlet; |
||||||
|
|
||||||
|
import com.liferay.portal.kernel.util.StringBundler; |
||||||
|
import com.liferay.portal.kernel.util.StringPool; |
||||||
|
|
||||||
|
import java.io.Serializable; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author Brian Wing Shun Chan |
||||||
|
*/ |
||||||
|
public class Preference implements Cloneable, Serializable { |
||||||
|
|
||||||
|
public Preference(String name, String value) { |
||||||
|
this(name, new String[] {value}); |
||||||
|
} |
||||||
|
|
||||||
|
public Preference(String name, String value, boolean readOnly) { |
||||||
|
this(name, new String[] {value}, readOnly); |
||||||
|
} |
||||||
|
|
||||||
|
public Preference(String name, String[] values) { |
||||||
|
this(name, values, false); |
||||||
|
} |
||||||
|
|
||||||
|
public Preference(String name, String[] values, boolean readOnly) { |
||||||
|
_name = name; |
||||||
|
_values = values; |
||||||
|
_readOnly = readOnly; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Object clone() { |
||||||
|
return new Preference(_name, _values, _readOnly); |
||||||
|
} |
||||||
|
|
||||||
|
public String getName() { |
||||||
|
return _name; |
||||||
|
} |
||||||
|
|
||||||
|
public boolean getReadOnly() { |
||||||
|
return _readOnly; |
||||||
|
} |
||||||
|
|
||||||
|
public String[] getValues() { |
||||||
|
return _values; |
||||||
|
} |
||||||
|
|
||||||
|
public boolean isReadOnly() { |
||||||
|
return _readOnly; |
||||||
|
} |
||||||
|
|
||||||
|
public void setValues(String[] values) { |
||||||
|
_values = values; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String toString() { |
||||||
|
StringBundler sb = new StringBundler(6 + (_values.length * 2 - 1)); |
||||||
|
|
||||||
|
sb.append("{name="); |
||||||
|
sb.append(getName()); |
||||||
|
sb.append(", readOnly="); |
||||||
|
sb.append(_readOnly); |
||||||
|
sb.append(", values=["); |
||||||
|
|
||||||
|
for (int i = 0; i < _values.length; i++) { |
||||||
|
sb.append(_values[i]); |
||||||
|
|
||||||
|
if (i < (_values.length - 1)) { |
||||||
|
sb.append(StringPool.COMMA); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
sb.append("]}"); |
||||||
|
|
||||||
|
return sb.toString(); |
||||||
|
} |
||||||
|
|
||||||
|
private String _name; |
||||||
|
private boolean _readOnly; |
||||||
|
private String[] _values; |
||||||
|
|
||||||
|
} |
@ -0,0 +1,164 @@ |
|||||||
|
/** |
||||||
|
* Copyright (c) 2000-2013 Liferay, Inc. All rights reserved. |
||||||
|
* |
||||||
|
* This library 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 2.1 of the License, or (at your option) |
||||||
|
* any later version. |
||||||
|
* |
||||||
|
* This library 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. |
||||||
|
*/ |
||||||
|
|
||||||
|
package com.liferay.portlet.documentlibrary.service.permission; |
||||||
|
|
||||||
|
import com.liferay.portal.kernel.exception.PortalException; |
||||||
|
import com.liferay.portal.kernel.exception.SystemException; |
||||||
|
import com.liferay.portal.kernel.repository.model.FileEntry; |
||||||
|
import com.liferay.portal.kernel.staging.permission.StagingPermissionUtil; |
||||||
|
import com.liferay.portal.kernel.workflow.permission.WorkflowPermissionUtil; |
||||||
|
import com.liferay.portal.security.auth.PrincipalException; |
||||||
|
import com.liferay.portal.security.permission.ActionKeys; |
||||||
|
import com.liferay.portal.security.permission.PermissionChecker; |
||||||
|
import com.liferay.portal.util.PortletKeys; |
||||||
|
import com.liferay.portal.util.PropsValues; |
||||||
|
import com.liferay.portlet.documentlibrary.NoSuchFolderException; |
||||||
|
import com.liferay.portlet.documentlibrary.model.DLFileEntry; |
||||||
|
import com.liferay.portlet.documentlibrary.model.DLFileVersion; |
||||||
|
import com.liferay.portlet.documentlibrary.model.DLFolder; |
||||||
|
import com.liferay.portlet.documentlibrary.model.DLFolderConstants; |
||||||
|
import com.liferay.portlet.documentlibrary.service.DLAppLocalServiceUtil; |
||||||
|
import com.liferay.portlet.documentlibrary.service.DLFolderLocalServiceUtil; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author Brian Wing Shun Chan |
||||||
|
* @author Charles May |
||||||
|
*/ |
||||||
|
public class DLFileEntryPermission { |
||||||
|
|
||||||
|
public static void check( |
||||||
|
PermissionChecker permissionChecker, DLFileEntry dlFileEntry, |
||||||
|
String actionId) |
||||||
|
throws PortalException, SystemException { |
||||||
|
|
||||||
|
if (!contains(permissionChecker, dlFileEntry, actionId)) { |
||||||
|
throw new PrincipalException(); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public static void check( |
||||||
|
PermissionChecker permissionChecker, FileEntry fileEntry, |
||||||
|
String actionId) |
||||||
|
throws PortalException, SystemException { |
||||||
|
|
||||||
|
if (!fileEntry.containsPermission(permissionChecker, actionId)) { |
||||||
|
throw new PrincipalException(); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public static void check( |
||||||
|
PermissionChecker permissionChecker, long fileEntryId, |
||||||
|
String actionId) |
||||||
|
throws PortalException, SystemException { |
||||||
|
|
||||||
|
if (!contains(permissionChecker, fileEntryId, actionId)) { |
||||||
|
throw new PrincipalException(); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public static boolean contains( |
||||||
|
PermissionChecker permissionChecker, DLFileEntry dlFileEntry, |
||||||
|
String actionId) |
||||||
|
throws PortalException, SystemException { |
||||||
|
|
||||||
|
Boolean hasPermission = StagingPermissionUtil.hasPermission( |
||||||
|
permissionChecker, dlFileEntry.getGroupId(), |
||||||
|
DLFileEntry.class.getName(), dlFileEntry.getFileEntryId(), |
||||||
|
PortletKeys.DOCUMENT_LIBRARY, actionId); |
||||||
|
|
||||||
|
if (hasPermission != null) { |
||||||
|
return hasPermission.booleanValue(); |
||||||
|
} |
||||||
|
|
||||||
|
DLFileVersion latestDLFileVersion = dlFileEntry.getLatestFileVersion( |
||||||
|
true); |
||||||
|
|
||||||
|
if (latestDLFileVersion.isPending()) { |
||||||
|
hasPermission = WorkflowPermissionUtil.hasPermission( |
||||||
|
permissionChecker, dlFileEntry.getGroupId(), |
||||||
|
DLFileEntry.class.getName(), dlFileEntry.getFileEntryId(), |
||||||
|
actionId); |
||||||
|
|
||||||
|
if (hasPermission != null) { |
||||||
|
return hasPermission.booleanValue(); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
if (actionId.equals(ActionKeys.VIEW) && |
||||||
|
PropsValues.PERMISSIONS_VIEW_DYNAMIC_INHERITANCE) { |
||||||
|
|
||||||
|
long dlFolderId = dlFileEntry.getFolderId(); |
||||||
|
|
||||||
|
if (dlFolderId == DLFolderConstants.DEFAULT_PARENT_FOLDER_ID) { |
||||||
|
if (!DLPermission.contains( |
||||||
|
permissionChecker, dlFileEntry.getGroupId(), |
||||||
|
actionId)) { |
||||||
|
|
||||||
|
return false; |
||||||
|
} |
||||||
|
} |
||||||
|
else { |
||||||
|
try { |
||||||
|
DLFolder dlFolder = DLFolderLocalServiceUtil.getFolder( |
||||||
|
dlFolderId); |
||||||
|
|
||||||
|
if (!DLFolderPermission.contains( |
||||||
|
permissionChecker, dlFolder, ActionKeys.ACCESS) && |
||||||
|
!DLFolderPermission.contains( |
||||||
|
permissionChecker, dlFolder, ActionKeys.VIEW)) { |
||||||
|
|
||||||
|
return false; |
||||||
|
} |
||||||
|
} |
||||||
|
catch (NoSuchFolderException nsfe) { |
||||||
|
if (!dlFileEntry.isInTrash()) { |
||||||
|
throw nsfe; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
if (permissionChecker.hasOwnerPermission( |
||||||
|
dlFileEntry.getCompanyId(), DLFileEntry.class.getName(), |
||||||
|
dlFileEntry.getFileEntryId(), dlFileEntry.getUserId(), |
||||||
|
actionId)) { |
||||||
|
|
||||||
|
return true; |
||||||
|
} |
||||||
|
|
||||||
|
return permissionChecker.hasPermission( |
||||||
|
dlFileEntry.getGroupId(), DLFileEntry.class.getName(), |
||||||
|
dlFileEntry.getFileEntryId(), actionId); |
||||||
|
} |
||||||
|
|
||||||
|
public static boolean contains( |
||||||
|
PermissionChecker permissionChecker, FileEntry fileEntry, |
||||||
|
String actionId) |
||||||
|
throws PortalException, SystemException { |
||||||
|
|
||||||
|
return fileEntry.containsPermission(permissionChecker, actionId); |
||||||
|
} |
||||||
|
|
||||||
|
public static boolean contains( |
||||||
|
PermissionChecker permissionChecker, long fileEntryId, |
||||||
|
String actionId) |
||||||
|
throws PortalException, SystemException { |
||||||
|
|
||||||
|
FileEntry fileEntry = DLAppLocalServiceUtil.getFileEntry(fileEntryId); |
||||||
|
|
||||||
|
return fileEntry.containsPermission(permissionChecker, actionId); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,165 @@ |
|||||||
|
/** |
||||||
|
* Copyright (c) 2000-2013 Liferay, Inc. All rights reserved. |
||||||
|
* |
||||||
|
* This library 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 2.1 of the License, or (at your option) |
||||||
|
* any later version. |
||||||
|
* |
||||||
|
* This library 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. |
||||||
|
*/ |
||||||
|
|
||||||
|
package com.liferay.portlet.documentlibrary.service.permission; |
||||||
|
|
||||||
|
import com.liferay.portal.kernel.exception.PortalException; |
||||||
|
import com.liferay.portal.kernel.exception.SystemException; |
||||||
|
import com.liferay.portal.kernel.repository.model.Folder; |
||||||
|
import com.liferay.portal.kernel.staging.permission.StagingPermissionUtil; |
||||||
|
import com.liferay.portal.security.auth.PrincipalException; |
||||||
|
import com.liferay.portal.security.permission.ActionKeys; |
||||||
|
import com.liferay.portal.security.permission.PermissionChecker; |
||||||
|
import com.liferay.portal.util.PortletKeys; |
||||||
|
import com.liferay.portal.util.PropsValues; |
||||||
|
import com.liferay.portlet.documentlibrary.NoSuchFolderException; |
||||||
|
import com.liferay.portlet.documentlibrary.model.DLFolder; |
||||||
|
import com.liferay.portlet.documentlibrary.model.DLFolderConstants; |
||||||
|
import com.liferay.portlet.documentlibrary.service.DLAppLocalServiceUtil; |
||||||
|
import com.liferay.portlet.documentlibrary.service.DLFolderLocalServiceUtil; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author Brian Wing Shun Chan |
||||||
|
*/ |
||||||
|
public class DLFolderPermission { |
||||||
|
|
||||||
|
public static void check( |
||||||
|
PermissionChecker permissionChecker, DLFolder dlFolder, |
||||||
|
String actionId) |
||||||
|
throws PortalException, SystemException { |
||||||
|
|
||||||
|
if (!contains(permissionChecker, dlFolder, actionId)) { |
||||||
|
throw new PrincipalException(); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public static void check( |
||||||
|
PermissionChecker permissionChecker, Folder folder, String actionId) |
||||||
|
throws PortalException, SystemException { |
||||||
|
|
||||||
|
if (!folder.containsPermission(permissionChecker, actionId)) { |
||||||
|
throw new PrincipalException(); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public static void check( |
||||||
|
PermissionChecker permissionChecker, long groupId, long folderId, |
||||||
|
String actionId) |
||||||
|
throws PortalException, SystemException { |
||||||
|
|
||||||
|
if (!contains(permissionChecker, groupId, folderId, actionId)) { |
||||||
|
throw new PrincipalException(); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public static boolean contains( |
||||||
|
PermissionChecker permissionChecker, DLFolder dlFolder, |
||||||
|
String actionId) |
||||||
|
throws PortalException, SystemException { |
||||||
|
|
||||||
|
if (actionId.equals(ActionKeys.ADD_FOLDER)) { |
||||||
|
actionId = ActionKeys.ADD_SUBFOLDER; |
||||||
|
} |
||||||
|
|
||||||
|
Boolean hasPermission = StagingPermissionUtil.hasPermission( |
||||||
|
permissionChecker, dlFolder.getGroupId(), DLFolder.class.getName(), |
||||||
|
dlFolder.getFolderId(), PortletKeys.DOCUMENT_LIBRARY, actionId); |
||||||
|
|
||||||
|
if (hasPermission != null) { |
||||||
|
return hasPermission.booleanValue(); |
||||||
|
} |
||||||
|
|
||||||
|
if (actionId.equals(ActionKeys.VIEW) && |
||||||
|
PropsValues.PERMISSIONS_VIEW_DYNAMIC_INHERITANCE) { |
||||||
|
|
||||||
|
try { |
||||||
|
long dlFolderId = dlFolder.getFolderId(); |
||||||
|
|
||||||
|
while (dlFolderId != |
||||||
|
DLFolderConstants.DEFAULT_PARENT_FOLDER_ID) { |
||||||
|
|
||||||
|
dlFolder = DLFolderLocalServiceUtil.getFolder(dlFolderId); |
||||||
|
|
||||||
|
if (!_hasPermission( |
||||||
|
permissionChecker, dlFolder, actionId)) { |
||||||
|
|
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
dlFolderId = dlFolder.getParentFolderId(); |
||||||
|
} |
||||||
|
} |
||||||
|
catch (NoSuchFolderException nsfe) { |
||||||
|
if (!dlFolder.isInTrash()) { |
||||||
|
throw nsfe; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
return DLPermission.contains( |
||||||
|
permissionChecker, dlFolder.getGroupId(), actionId); |
||||||
|
} |
||||||
|
|
||||||
|
return _hasPermission(permissionChecker, dlFolder, actionId); |
||||||
|
} |
||||||
|
|
||||||
|
public static boolean contains( |
||||||
|
PermissionChecker permissionChecker, Folder folder, String actionId) |
||||||
|
throws PortalException, SystemException { |
||||||
|
|
||||||
|
return folder.containsPermission(permissionChecker, actionId); |
||||||
|
} |
||||||
|
|
||||||
|
public static boolean contains( |
||||||
|
PermissionChecker permissionChecker, long groupId, long folderId, |
||||||
|
String actionId) |
||||||
|
throws PortalException, SystemException { |
||||||
|
|
||||||
|
if (folderId == DLFolderConstants.DEFAULT_PARENT_FOLDER_ID) { |
||||||
|
|
||||||
|
// Prevent the propagation of checks for actions that are not
|
||||||
|
// supported at the application resource level. See LPS-24245.
|
||||||
|
|
||||||
|
if (actionId.equals(ActionKeys.ACCESS) || |
||||||
|
actionId.equals(ActionKeys.ADD_SUBFOLDER) || |
||||||
|
actionId.equals(ActionKeys.DELETE)) { |
||||||
|
|
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
return DLPermission.contains(permissionChecker, groupId, actionId); |
||||||
|
} |
||||||
|
|
||||||
|
Folder folder = DLAppLocalServiceUtil.getFolder(folderId); |
||||||
|
|
||||||
|
return folder.containsPermission(permissionChecker, actionId); |
||||||
|
} |
||||||
|
|
||||||
|
private static boolean _hasPermission( |
||||||
|
PermissionChecker permissionChecker, DLFolder dlFolder, |
||||||
|
String actionId) { |
||||||
|
|
||||||
|
if (permissionChecker.hasOwnerPermission( |
||||||
|
dlFolder.getCompanyId(), DLFolder.class.getName(), |
||||||
|
dlFolder.getFolderId(), dlFolder.getUserId(), actionId) || |
||||||
|
permissionChecker.hasPermission( |
||||||
|
dlFolder.getGroupId(), DLFolder.class.getName(), |
||||||
|
dlFolder.getFolderId(), actionId)) { |
||||||
|
|
||||||
|
return true; |
||||||
|
} |
||||||
|
|
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,81 @@ |
|||||||
|
/** |
||||||
|
* Copyright (c) 2000-2013 Liferay, Inc. All rights reserved. |
||||||
|
* |
||||||
|
* This library 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 2.1 of the License, or (at your option) |
||||||
|
* any later version. |
||||||
|
* |
||||||
|
* This library 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. |
||||||
|
*/ |
||||||
|
|
||||||
|
package com.liferay.portlet.documentlibrary.service.permission; |
||||||
|
|
||||||
|
import com.liferay.portal.kernel.exception.PortalException; |
||||||
|
import com.liferay.portal.kernel.log.Log; |
||||||
|
import com.liferay.portal.kernel.log.LogFactoryUtil; |
||||||
|
import com.liferay.portal.kernel.staging.permission.StagingPermissionUtil; |
||||||
|
import com.liferay.portal.model.ResourceConstants; |
||||||
|
import com.liferay.portal.security.auth.PrincipalException; |
||||||
|
import com.liferay.portal.security.permission.PermissionChecker; |
||||||
|
import com.liferay.portal.service.ResourceLocalServiceUtil; |
||||||
|
import com.liferay.portal.service.ResourcePermissionLocalServiceUtil; |
||||||
|
import com.liferay.portal.util.PortletKeys; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author Jorge Ferrer |
||||||
|
*/ |
||||||
|
public class DLPermission { |
||||||
|
|
||||||
|
public static final String RESOURCE_NAME = |
||||||
|
"com.liferay.portlet.documentlibrary"; |
||||||
|
|
||||||
|
public static void check( |
||||||
|
PermissionChecker permissionChecker, long groupId, String actionId) |
||||||
|
throws PortalException { |
||||||
|
|
||||||
|
if (!contains(permissionChecker, groupId, actionId)) { |
||||||
|
throw new PrincipalException(); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public static boolean contains( |
||||||
|
PermissionChecker permissionChecker, long groupId, String actionId) { |
||||||
|
|
||||||
|
Boolean hasPermission = StagingPermissionUtil.hasPermission( |
||||||
|
permissionChecker, groupId, RESOURCE_NAME, groupId, |
||||||
|
PortletKeys.DOCUMENT_LIBRARY, actionId); |
||||||
|
|
||||||
|
if (hasPermission != null) { |
||||||
|
return hasPermission.booleanValue(); |
||||||
|
} |
||||||
|
|
||||||
|
try { |
||||||
|
int count = |
||||||
|
ResourcePermissionLocalServiceUtil.getResourcePermissionsCount( |
||||||
|
permissionChecker.getCompanyId(), RESOURCE_NAME, |
||||||
|
ResourceConstants.SCOPE_INDIVIDUAL, |
||||||
|
String.valueOf(groupId)); |
||||||
|
|
||||||
|
if (count == 0) { |
||||||
|
ResourceLocalServiceUtil.addResources( |
||||||
|
permissionChecker.getCompanyId(), groupId, 0, RESOURCE_NAME, |
||||||
|
groupId, false, true, true); |
||||||
|
} |
||||||
|
} |
||||||
|
catch (Exception e) { |
||||||
|
if (_log.isWarnEnabled()) { |
||||||
|
_log.warn(e, e); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
return permissionChecker.hasPermission( |
||||||
|
groupId, RESOURCE_NAME, groupId, actionId); |
||||||
|
} |
||||||
|
|
||||||
|
private static Log _log = LogFactoryUtil.getLog(DLPermission.class); |
||||||
|
|
||||||
|
} |
@ -0,0 +1,406 @@ |
|||||||
|
/** |
||||||
|
* Copyright (c) 2000-2013 Liferay, Inc. All rights reserved. |
||||||
|
* |
||||||
|
* This library 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 2.1 of the License, or (at your option) |
||||||
|
* any later version. |
||||||
|
* |
||||||
|
* This library 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. |
||||||
|
*/ |
||||||
|
|
||||||
|
package com.liferay.portlet.documentlibrary.util; |
||||||
|
|
||||||
|
import com.artofsolving.jodconverter.DefaultDocumentFormatRegistry; |
||||||
|
import com.artofsolving.jodconverter.DocumentConverter; |
||||||
|
import com.artofsolving.jodconverter.DocumentFormat; |
||||||
|
import com.artofsolving.jodconverter.DocumentFormatRegistry; |
||||||
|
import com.artofsolving.jodconverter.openoffice.connection.OpenOfficeConnection; |
||||||
|
import com.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeConnection; |
||||||
|
import com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter; |
||||||
|
import com.artofsolving.jodconverter.openoffice.converter.StreamOpenOfficeDocumentConverter; |
||||||
|
|
||||||
|
import com.liferay.portal.kernel.configuration.Filter; |
||||||
|
import com.liferay.portal.kernel.exception.SystemException; |
||||||
|
import com.liferay.portal.kernel.io.unsync.UnsyncByteArrayOutputStream; |
||||||
|
import com.liferay.portal.kernel.log.Log; |
||||||
|
import com.liferay.portal.kernel.log.LogFactoryUtil; |
||||||
|
import com.liferay.portal.kernel.util.ArrayUtil; |
||||||
|
import com.liferay.portal.kernel.util.FileUtil; |
||||||
|
import com.liferay.portal.kernel.util.PropsKeys; |
||||||
|
import com.liferay.portal.kernel.util.SortedArrayList; |
||||||
|
import com.liferay.portal.kernel.util.StringBundler; |
||||||
|
import com.liferay.portal.kernel.util.StringPool; |
||||||
|
import com.liferay.portal.kernel.util.SystemProperties; |
||||||
|
import com.liferay.portal.kernel.util.Validator; |
||||||
|
import com.liferay.portal.util.PrefsPropsUtil; |
||||||
|
import com.liferay.portal.util.PropsUtil; |
||||||
|
import com.liferay.portal.util.PropsValues; |
||||||
|
|
||||||
|
import java.io.File; |
||||||
|
import java.io.IOException; |
||||||
|
import java.io.InputStream; |
||||||
|
|
||||||
|
import java.util.ArrayList; |
||||||
|
import java.util.HashMap; |
||||||
|
import java.util.List; |
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author Bruno Farache |
||||||
|
* @author Alexander Chow |
||||||
|
*/ |
||||||
|
public class DocumentConversionUtil { |
||||||
|
|
||||||
|
public static File convert( |
||||||
|
String id, InputStream inputStream, String sourceExtension, |
||||||
|
String targetExtension) |
||||||
|
throws IOException, SystemException { |
||||||
|
|
||||||
|
return _instance._convert( |
||||||
|
id, inputStream, sourceExtension, targetExtension); |
||||||
|
} |
||||||
|
|
||||||
|
public static void disconnect() { |
||||||
|
_instance._disconnect(); |
||||||
|
} |
||||||
|
|
||||||
|
public static String[] getConversions(String extension) { |
||||||
|
return _instance._getConversions(extension); |
||||||
|
} |
||||||
|
|
||||||
|
public static String getFilePath(String id, String targetExtension) { |
||||||
|
StringBundler sb = new StringBundler(5); |
||||||
|
|
||||||
|
sb.append(SystemProperties.get(SystemProperties.TMP_DIR)); |
||||||
|
sb.append("/liferay/document_conversion/"); |
||||||
|
sb.append(id); |
||||||
|
sb.append(StringPool.PERIOD); |
||||||
|
sb.append(targetExtension); |
||||||
|
|
||||||
|
return sb.toString(); |
||||||
|
} |
||||||
|
|
||||||
|
public static boolean isComparableVersion(String extension) { |
||||||
|
boolean enabled = false; |
||||||
|
|
||||||
|
String periodAndExtension = StringPool.PERIOD.concat(extension); |
||||||
|
|
||||||
|
for (int i = 0; i < _COMPARABLE_FILE_EXTENSIONS.length; i++) { |
||||||
|
if (StringPool.STAR.equals(_COMPARABLE_FILE_EXTENSIONS[i]) || |
||||||
|
periodAndExtension.equals(_COMPARABLE_FILE_EXTENSIONS[i])) { |
||||||
|
|
||||||
|
enabled = true; |
||||||
|
|
||||||
|
break; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
if (!enabled) { |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
if (extension.equals("css") || extension.equals("htm") || |
||||||
|
extension.equals("html") || extension.equals("js") || |
||||||
|
extension.equals("txt") || extension.equals("xml")) { |
||||||
|
|
||||||
|
return true; |
||||||
|
} |
||||||
|
|
||||||
|
try { |
||||||
|
if (isEnabled() && isConvertBeforeCompare(extension)) { |
||||||
|
return true; |
||||||
|
} |
||||||
|
} |
||||||
|
catch (Exception e) { |
||||||
|
if (_log.isErrorEnabled()) { |
||||||
|
_log.error(e, e); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
public static boolean isConvertBeforeCompare(String extension) { |
||||||
|
if (extension.equals("txt")) { |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
String[] conversions = getConversions(extension); |
||||||
|
|
||||||
|
for (int i = 0; i < conversions.length; i++) { |
||||||
|
if (conversions[i].equals("txt")) { |
||||||
|
return true; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
public static boolean isEnabled() { |
||||||
|
try { |
||||||
|
return PrefsPropsUtil.getBoolean( |
||||||
|
PropsKeys.OPENOFFICE_SERVER_ENABLED, |
||||||
|
PropsValues.OPENOFFICE_SERVER_ENABLED); |
||||||
|
} |
||||||
|
catch (Exception e) { |
||||||
|
} |
||||||
|
|
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
private DocumentConversionUtil() { |
||||||
|
_populateConversionsMap("drawing"); |
||||||
|
_populateConversionsMap("presentation"); |
||||||
|
_populateConversionsMap("spreadsheet"); |
||||||
|
_populateConversionsMap("text"); |
||||||
|
} |
||||||
|
|
||||||
|
private File _convert( |
||||||
|
String id, InputStream inputStream, String sourceExtension, |
||||||
|
String targetExtension) |
||||||
|
throws IOException, SystemException { |
||||||
|
|
||||||
|
if (!isEnabled()) { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
sourceExtension = _fixExtension(sourceExtension); |
||||||
|
targetExtension = _fixExtension(targetExtension); |
||||||
|
|
||||||
|
_validate(targetExtension, id); |
||||||
|
|
||||||
|
String fileName = getFilePath(id, targetExtension); |
||||||
|
|
||||||
|
File file = new File(fileName); |
||||||
|
|
||||||
|
if (PropsValues.OPENOFFICE_CACHE_ENABLED && file.exists()) { |
||||||
|
return file; |
||||||
|
} |
||||||
|
|
||||||
|
DocumentFormatRegistry documentFormatRegistry = |
||||||
|
new DefaultDocumentFormatRegistry(); |
||||||
|
|
||||||
|
DocumentFormat inputDocumentFormat = |
||||||
|
documentFormatRegistry.getFormatByFileExtension(sourceExtension); |
||||||
|
DocumentFormat outputDocumentFormat = |
||||||
|
documentFormatRegistry.getFormatByFileExtension(targetExtension); |
||||||
|
|
||||||
|
if (inputDocumentFormat == null) { |
||||||
|
throw new SystemException( |
||||||
|
"Conversion is not supported from ." + sourceExtension); |
||||||
|
} |
||||||
|
else if (!inputDocumentFormat.isImportable()) { |
||||||
|
throw new SystemException( |
||||||
|
"Conversion is not supported from " + |
||||||
|
inputDocumentFormat.getName()); |
||||||
|
} |
||||||
|
else if (outputDocumentFormat == null) { |
||||||
|
throw new SystemException( |
||||||
|
"Conversion is not supported from " + |
||||||
|
inputDocumentFormat.getName() + " to ." + |
||||||
|
targetExtension); |
||||||
|
} |
||||||
|
else if (!inputDocumentFormat.isExportableTo(outputDocumentFormat)) { |
||||||
|
throw new SystemException( |
||||||
|
"Conversion is not supported from " + |
||||||
|
inputDocumentFormat.getName() + " to " + |
||||||
|
outputDocumentFormat.getName()); |
||||||
|
} |
||||||
|
|
||||||
|
UnsyncByteArrayOutputStream unsyncByteArrayOutputStream = |
||||||
|
new UnsyncByteArrayOutputStream(); |
||||||
|
|
||||||
|
DocumentConverter documentConverter = _getDocumentConverter(); |
||||||
|
|
||||||
|
documentConverter.convert( |
||||||
|
inputStream, inputDocumentFormat, unsyncByteArrayOutputStream, |
||||||
|
outputDocumentFormat); |
||||||
|
|
||||||
|
FileUtil.write( |
||||||
|
file, unsyncByteArrayOutputStream.unsafeGetByteArray(), 0, |
||||||
|
unsyncByteArrayOutputStream.size()); |
||||||
|
|
||||||
|
return file; |
||||||
|
} |
||||||
|
|
||||||
|
private void _disconnect() { |
||||||
|
if (_openOfficeConnection != null) { |
||||||
|
_openOfficeConnection.disconnect(); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private String _fixExtension(String extension) { |
||||||
|
if (extension.equals("htm")) { |
||||||
|
extension = "html"; |
||||||
|
} |
||||||
|
|
||||||
|
return extension; |
||||||
|
} |
||||||
|
|
||||||
|
private String[] _getConversions(String extension) { |
||||||
|
extension = _fixExtension(extension); |
||||||
|
|
||||||
|
String[] conversions = _conversionsMap.get(extension); |
||||||
|
|
||||||
|
if (conversions == null) { |
||||||
|
conversions = _DEFAULT_CONVERSIONS; |
||||||
|
} |
||||||
|
else { |
||||||
|
if (ArrayUtil.contains(conversions, extension)) { |
||||||
|
List<String> conversionsList = new ArrayList<String>(); |
||||||
|
|
||||||
|
for (int i = 0; i < conversions.length; i++) { |
||||||
|
String conversion = conversions[i]; |
||||||
|
|
||||||
|
if (!conversion.equals(extension)) { |
||||||
|
conversionsList.add(conversion); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
conversions = conversionsList.toArray( |
||||||
|
new String[conversionsList.size()]); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
return conversions; |
||||||
|
} |
||||||
|
|
||||||
|
private DocumentConverter _getDocumentConverter() throws SystemException { |
||||||
|
if ((_openOfficeConnection != null) && (_documentConverter != null)) { |
||||||
|
return _documentConverter; |
||||||
|
} |
||||||
|
|
||||||
|
String host = PrefsPropsUtil.getString( |
||||||
|
PropsKeys.OPENOFFICE_SERVER_HOST); |
||||||
|
int port = PrefsPropsUtil.getInteger( |
||||||
|
PropsKeys.OPENOFFICE_SERVER_PORT, |
||||||
|
PropsValues.OPENOFFICE_SERVER_PORT); |
||||||
|
|
||||||
|
if (_isRemoteOpenOfficeHost(host)) { |
||||||
|
_openOfficeConnection = new SocketOpenOfficeConnection(host, port); |
||||||
|
_documentConverter = new StreamOpenOfficeDocumentConverter( |
||||||
|
_openOfficeConnection); |
||||||
|
} |
||||||
|
else { |
||||||
|
_openOfficeConnection = new SocketOpenOfficeConnection(port); |
||||||
|
_documentConverter = new OpenOfficeDocumentConverter( |
||||||
|
_openOfficeConnection); |
||||||
|
} |
||||||
|
|
||||||
|
return _documentConverter; |
||||||
|
} |
||||||
|
|
||||||
|
private boolean _isRemoteOpenOfficeHost(String host) { |
||||||
|
if (Validator.isNotNull(host) && !host.equals(_LOCALHOST_IP) && |
||||||
|
!host.startsWith(_LOCALHOST)) { |
||||||
|
|
||||||
|
return true; |
||||||
|
} |
||||||
|
else { |
||||||
|
return false; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private void _populateConversionsMap(String documentFamily) { |
||||||
|
Filter filter = new Filter(documentFamily); |
||||||
|
|
||||||
|
DocumentFormatRegistry documentFormatRegistry = |
||||||
|
new DefaultDocumentFormatRegistry(); |
||||||
|
|
||||||
|
String[] sourceExtensions = PropsUtil.getArray( |
||||||
|
PropsKeys.OPENOFFICE_CONVERSION_SOURCE_EXTENSIONS, filter); |
||||||
|
String[] targetExtensions = PropsUtil.getArray( |
||||||
|
PropsKeys.OPENOFFICE_CONVERSION_TARGET_EXTENSIONS, filter); |
||||||
|
|
||||||
|
for (String sourceExtension : sourceExtensions) { |
||||||
|
List<String> conversions = new SortedArrayList<String>(); |
||||||
|
|
||||||
|
DocumentFormat sourceDocumentFormat = |
||||||
|
documentFormatRegistry.getFormatByFileExtension( |
||||||
|
sourceExtension); |
||||||
|
|
||||||
|
if (sourceDocumentFormat == null) { |
||||||
|
if (_log.isWarnEnabled()) { |
||||||
|
_log.warn("Invalid source extension " + sourceExtension); |
||||||
|
} |
||||||
|
|
||||||
|
continue; |
||||||
|
} |
||||||
|
|
||||||
|
for (String targetExtension : targetExtensions) { |
||||||
|
DocumentFormat targetDocumentFormat = |
||||||
|
documentFormatRegistry.getFormatByFileExtension( |
||||||
|
targetExtension); |
||||||
|
|
||||||
|
if (targetDocumentFormat == null) { |
||||||
|
if (_log.isWarnEnabled()) { |
||||||
|
_log.warn( |
||||||
|
"Invalid target extension " + targetDocumentFormat); |
||||||
|
} |
||||||
|
|
||||||
|
continue; |
||||||
|
} |
||||||
|
|
||||||
|
if (sourceDocumentFormat.isExportableTo(targetDocumentFormat)) { |
||||||
|
conversions.add(targetExtension); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
if (conversions.isEmpty()) { |
||||||
|
if (_log.isInfoEnabled()) { |
||||||
|
_log.info( |
||||||
|
"There are no conversions supported from " + |
||||||
|
sourceExtension); |
||||||
|
} |
||||||
|
} |
||||||
|
else { |
||||||
|
if (_log.isInfoEnabled()) { |
||||||
|
_log.info( |
||||||
|
"Conversions supported from " + sourceExtension + |
||||||
|
" to " + conversions); |
||||||
|
} |
||||||
|
|
||||||
|
_conversionsMap.put( |
||||||
|
sourceExtension, |
||||||
|
conversions.toArray(new String[conversions.size()])); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private void _validate(String targetExtension, String id) |
||||||
|
throws SystemException { |
||||||
|
|
||||||
|
if (!Validator.isFileExtension(targetExtension)) { |
||||||
|
throw new SystemException("Invalid extension: " + targetExtension); |
||||||
|
} |
||||||
|
|
||||||
|
if (!Validator.isFileName(id)) { |
||||||
|
throw new SystemException("Invalid file name: " + id); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private static final String[] _COMPARABLE_FILE_EXTENSIONS = |
||||||
|
PropsValues.DL_COMPARABLE_FILE_EXTENSIONS; |
||||||
|
|
||||||
|
private static final String[] _DEFAULT_CONVERSIONS = new String[0]; |
||||||
|
|
||||||
|
private static final String _LOCALHOST = "localhost"; |
||||||
|
|
||||||
|
private static final String _LOCALHOST_IP = "127.0.0.1"; |
||||||
|
|
||||||
|
private static Log _log = LogFactoryUtil.getLog( |
||||||
|
DocumentConversionUtil.class); |
||||||
|
|
||||||
|
private static DocumentConversionUtil _instance = |
||||||
|
new DocumentConversionUtil(); |
||||||
|
|
||||||
|
private Map<String, String[]> _conversionsMap = |
||||||
|
new HashMap<String, String[]>(); |
||||||
|
private DocumentConverter _documentConverter; |
||||||
|
private OpenOfficeConnection _openOfficeConnection; |
||||||
|
|
||||||
|
} |
@ -0,0 +1,118 @@ |
|||||||
|
/** |
||||||
|
* Copyright (c) 2000-2013 Liferay, Inc. All rights reserved. |
||||||
|
* |
||||||
|
* This library 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 2.1 of the License, or (at your option) |
||||||
|
* any later version. |
||||||
|
* |
||||||
|
* This library 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. |
||||||
|
*/ |
||||||
|
|
||||||
|
package com.liferay.portlet.documentlibrary.util; |
||||||
|
|
||||||
|
import com.liferay.portal.image.ImageToolImpl; |
||||||
|
import com.liferay.portal.kernel.image.ImageTool; |
||||||
|
|
||||||
|
import java.awt.image.RenderedImage; |
||||||
|
|
||||||
|
import java.io.File; |
||||||
|
|
||||||
|
import javax.imageio.ImageIO; |
||||||
|
|
||||||
|
import org.apache.pdfbox.pdmodel.PDDocument; |
||||||
|
import org.apache.pdfbox.pdmodel.PDPageTree; |
||||||
|
import org.apache.pdfbox.rendering.ImageType; |
||||||
|
import org.apache.pdfbox.rendering.PDFRenderer; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author Juan Gonzalez |
||||||
|
*/ |
||||||
|
public class LiferayPDFBoxConverter { |
||||||
|
|
||||||
|
public LiferayPDFBoxConverter( |
||||||
|
File inputFile, File thumbnailFile, File[] previewFiles, |
||||||
|
String extension, String thumbnailExtension, int dpi, int height, |
||||||
|
int width, boolean generatePreview, boolean generateThumbnail) { |
||||||
|
|
||||||
|
_inputFile = inputFile; |
||||||
|
_thumbnailFile = thumbnailFile; |
||||||
|
_previewFiles = previewFiles; |
||||||
|
_extension = extension; |
||||||
|
_thumbnailExtension = thumbnailExtension; |
||||||
|
_dpi = dpi; |
||||||
|
_height = height; |
||||||
|
_width = width; |
||||||
|
_generatePreview = generatePreview; |
||||||
|
_generateThumbnail = generateThumbnail; |
||||||
|
} |
||||||
|
|
||||||
|
public void generateImagesPB() throws Exception { |
||||||
|
PDDocument pdDocument = null; |
||||||
|
|
||||||
|
try { |
||||||
|
pdDocument = PDDocument.load(_inputFile); |
||||||
|
|
||||||
|
PDFRenderer pdfRenderer = new PDFRenderer(pdDocument); |
||||||
|
|
||||||
|
PDPageTree pdPageTree = pdDocument.getPages(); |
||||||
|
|
||||||
|
int count = pdPageTree.getCount(); |
||||||
|
|
||||||
|
for (int i = 0; i < count; i++) { |
||||||
|
if (_generateThumbnail && (i == 0)) { |
||||||
|
_generateImagesPB( |
||||||
|
pdfRenderer, i, _thumbnailFile, _thumbnailExtension); |
||||||
|
} |
||||||
|
|
||||||
|
if (!_generatePreview) { |
||||||
|
break; |
||||||
|
} |
||||||
|
|
||||||
|
_generateImagesPB(pdfRenderer, i, _previewFiles[i], _extension); |
||||||
|
} |
||||||
|
} |
||||||
|
finally { |
||||||
|
if (pdDocument != null) { |
||||||
|
pdDocument.close(); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private void _generateImagesPB( |
||||||
|
PDFRenderer pdfRenderer, int pageIndex, File outputFile, |
||||||
|
String extension) |
||||||
|
throws Exception { |
||||||
|
|
||||||
|
RenderedImage renderedImage = pdfRenderer.renderImageWithDPI( |
||||||
|
pageIndex, _dpi, ImageType.RGB); |
||||||
|
|
||||||
|
ImageTool imageTool = ImageToolImpl.getInstance(); |
||||||
|
|
||||||
|
if (_height != 0) { |
||||||
|
renderedImage = imageTool.scale(renderedImage, _width, _height); |
||||||
|
} |
||||||
|
else { |
||||||
|
renderedImage = imageTool.scale(renderedImage, _width); |
||||||
|
} |
||||||
|
|
||||||
|
outputFile.createNewFile(); |
||||||
|
|
||||||
|
ImageIO.write(renderedImage, extension, outputFile); |
||||||
|
} |
||||||
|
|
||||||
|
private int _dpi; |
||||||
|
private String _extension; |
||||||
|
private boolean _generatePreview; |
||||||
|
private boolean _generateThumbnail; |
||||||
|
private int _height; |
||||||
|
private File _inputFile; |
||||||
|
private File[] _previewFiles; |
||||||
|
private String _thumbnailExtension; |
||||||
|
private File _thumbnailFile; |
||||||
|
private int _width; |
||||||
|
|
||||||
|
} |
@ -0,0 +1,636 @@ |
|||||||
|
/** |
||||||
|
* Copyright (c) 2000-2013 Liferay, Inc. All rights reserved. This library 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 2.1 of the License, or (at your option) any later version. This library 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. |
||||||
|
*/ |
||||||
|
|
||||||
|
package it.mwg.sicilia.preview; |
||||||
|
|
||||||
|
import java.io.File; |
||||||
|
import java.io.InputStream; |
||||||
|
import java.util.ArrayList; |
||||||
|
import java.util.Arrays; |
||||||
|
import java.util.LinkedList; |
||||||
|
import java.util.List; |
||||||
|
import java.util.Map; |
||||||
|
import java.util.Properties; |
||||||
|
import java.util.Set; |
||||||
|
import java.util.Vector; |
||||||
|
import java.util.concurrent.Future; |
||||||
|
|
||||||
|
import org.apache.commons.io.FileUtils; |
||||||
|
import org.apache.commons.lang.time.StopWatch; |
||||||
|
import org.apache.pdfbox.pdmodel.PDDocument; |
||||||
|
|
||||||
|
import com.liferay.portal.kernel.image.GhostscriptUtil; |
||||||
|
import com.liferay.portal.kernel.lar.PortletDataContext; |
||||||
|
import com.liferay.portal.kernel.log.Log; |
||||||
|
import com.liferay.portal.kernel.log.LogFactoryUtil; |
||||||
|
import com.liferay.portal.kernel.messaging.DestinationNames; |
||||||
|
import com.liferay.portal.kernel.process.ClassPathUtil; |
||||||
|
import com.liferay.portal.kernel.process.ProcessCallable; |
||||||
|
import com.liferay.portal.kernel.process.ProcessException; |
||||||
|
import com.liferay.portal.kernel.process.ProcessExecutor; |
||||||
|
import com.liferay.portal.kernel.process.ProcessUtil; |
||||||
|
import com.liferay.portal.kernel.repository.model.FileEntry; |
||||||
|
import com.liferay.portal.kernel.repository.model.FileVersion; |
||||||
|
import com.liferay.portal.kernel.util.ContentTypes; |
||||||
|
import com.liferay.portal.kernel.util.FileUtil; |
||||||
|
import com.liferay.portal.kernel.util.GetterUtil; |
||||||
|
import com.liferay.portal.kernel.util.MimeTypesUtil; |
||||||
|
import com.liferay.portal.kernel.util.PropsKeys; |
||||||
|
import com.liferay.portal.kernel.util.ServerDetector; |
||||||
|
import com.liferay.portal.kernel.util.StreamUtil; |
||||||
|
import com.liferay.portal.kernel.util.StringPool; |
||||||
|
import com.liferay.portal.kernel.util.SystemEnv; |
||||||
|
import com.liferay.portal.kernel.util.Validator; |
||||||
|
import com.liferay.portal.kernel.xml.Element; |
||||||
|
import com.liferay.portal.log.Log4jLogFactoryImpl; |
||||||
|
import com.liferay.portal.repository.liferayrepository.model.LiferayFileVersion; |
||||||
|
import com.liferay.portal.util.PropsUtil; |
||||||
|
import com.liferay.portal.util.PropsValues; |
||||||
|
import com.liferay.portlet.documentlibrary.NoSuchFileEntryException; |
||||||
|
import com.liferay.portlet.documentlibrary.store.DLStoreUtil; |
||||||
|
import com.liferay.portlet.documentlibrary.util.DLPreviewableProcessor; |
||||||
|
import com.liferay.portlet.documentlibrary.util.DLUtil; |
||||||
|
import com.liferay.portlet.documentlibrary.util.DocumentConversionUtil; |
||||||
|
import com.liferay.portlet.documentlibrary.util.LiferayPDFBoxConverter; |
||||||
|
import com.liferay.portlet.documentlibrary.util.PDFProcessor; |
||||||
|
import com.liferay.util.log4j.Log4JUtil; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author Alexander Chow |
||||||
|
* @author Mika Koivisto |
||||||
|
* @author Juan González |
||||||
|
* @author Sergio González |
||||||
|
* @author Ivica Cardic |
||||||
|
* @author Manifattura Web Group Srl |
||||||
|
*/ |
||||||
|
public class SiciliaP7MProcessor extends DLPreviewableProcessor implements PDFProcessor { |
||||||
|
|
||||||
|
@Override |
||||||
|
public void afterPropertiesSet() throws Exception { |
||||||
|
|
||||||
|
FileUtil.mkdirs(PREVIEW_TMP_PATH); |
||||||
|
FileUtil.mkdirs(THUMBNAIL_TMP_PATH); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void generateImages(FileVersion sourceFileVersion, FileVersion destinationFileVersion) throws Exception { |
||||||
|
|
||||||
|
_generateImages(sourceFileVersion, destinationFileVersion); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public InputStream getPreviewAsStream(FileVersion fileVersion, int index) throws Exception { |
||||||
|
|
||||||
|
return doGetPreviewAsStream(fileVersion, index, PREVIEW_TYPE); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public int getPreviewFileCount(FileVersion fileVersion) { |
||||||
|
|
||||||
|
try { |
||||||
|
return doGetPreviewFileCount(fileVersion); |
||||||
|
} catch (Exception e) { |
||||||
|
_log.error(e, e); |
||||||
|
} |
||||||
|
return 0; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public long getPreviewFileSize(FileVersion fileVersion, int index) throws Exception { |
||||||
|
|
||||||
|
return doGetPreviewFileSize(fileVersion, index); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public InputStream getThumbnailAsStream(FileVersion fileVersion, int index) throws Exception { |
||||||
|
|
||||||
|
return doGetThumbnailAsStream(fileVersion, index); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public long getThumbnailFileSize(FileVersion fileVersion, int index) throws Exception { |
||||||
|
|
||||||
|
return doGetThumbnailFileSize(fileVersion, index); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean hasImages(FileVersion fileVersion) { |
||||||
|
|
||||||
|
boolean hasImages = false; |
||||||
|
try { |
||||||
|
hasImages = _hasImages(fileVersion); |
||||||
|
if (!hasImages && isSupported(fileVersion)) { |
||||||
|
_queueGeneration(null, fileVersion); |
||||||
|
} |
||||||
|
} catch (Exception e) { |
||||||
|
_log.error(e, e); |
||||||
|
} |
||||||
|
return hasImages; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean isDocumentSupported(FileVersion fileVersion) { |
||||||
|
|
||||||
|
return isSupported(fileVersion); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean isDocumentSupported(String mimeType) { |
||||||
|
|
||||||
|
return isSupported(mimeType); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean isSupported(String mimeType) { |
||||||
|
|
||||||
|
if (Validator.isNull(mimeType)) { |
||||||
|
return false; |
||||||
|
} |
||||||
|
if (mimeType.equals(ContentTypes.APPLICATION_PDF) || mimeType.equals(ContentTypes.APPLICATION_X_PDF) |
||||||
|
|| mimeType.equals("application/pkcs7-mime")) { |
||||||
|
return true; |
||||||
|
} |
||||||
|
if (DocumentConversionUtil.isEnabled()) { |
||||||
|
Set<String> extensions = MimeTypesUtil.getExtensions(mimeType); |
||||||
|
for (String extension : extensions) { |
||||||
|
extension = extension.substring(1); |
||||||
|
String[] targetExtensions = DocumentConversionUtil.getConversions(extension); |
||||||
|
if (Arrays.binarySearch(targetExtensions, "pdf") >= 0) { |
||||||
|
return true; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void trigger(FileVersion sourceFileVersion, FileVersion destinationFileVersion) { |
||||||
|
|
||||||
|
super.trigger(sourceFileVersion, destinationFileVersion); |
||||||
|
_queueGeneration(sourceFileVersion, destinationFileVersion); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
protected void copyPreviews(FileVersion sourceFileVersion, FileVersion destinationFileVersion) { |
||||||
|
|
||||||
|
if (!PropsValues.DL_FILE_ENTRY_PREVIEW_ENABLED) { |
||||||
|
return; |
||||||
|
} |
||||||
|
try { |
||||||
|
if (hasPreview(sourceFileVersion) && !hasPreview(destinationFileVersion)) { |
||||||
|
int count = getPreviewFileCount(sourceFileVersion); |
||||||
|
for (int i = 0; i < count; i++) { |
||||||
|
String previewFilePath = getPreviewFilePath(destinationFileVersion, i + 1); |
||||||
|
InputStream is = doGetPreviewAsStream(sourceFileVersion, i + 1, PREVIEW_TYPE); |
||||||
|
addFileToStore(destinationFileVersion.getCompanyId(), PREVIEW_PATH, previewFilePath, is); |
||||||
|
} |
||||||
|
} |
||||||
|
} catch (Exception e) { |
||||||
|
_log.error(e, e); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
protected void doExportGeneratedFiles(PortletDataContext portletDataContext, FileEntry fileEntry, |
||||||
|
Element fileEntryElement) throws Exception { |
||||||
|
|
||||||
|
exportThumbnails(portletDataContext, fileEntry, fileEntryElement, "pdf"); |
||||||
|
exportPreviews(portletDataContext, fileEntry, fileEntryElement); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
protected void doImportGeneratedFiles(PortletDataContext portletDataContext, FileEntry fileEntry, |
||||||
|
FileEntry importedFileEntry, Element fileEntryElement) throws Exception { |
||||||
|
|
||||||
|
importThumbnails(portletDataContext, fileEntry, importedFileEntry, fileEntryElement, "pdf"); |
||||||
|
importPreviews(portletDataContext, fileEntry, importedFileEntry, fileEntryElement); |
||||||
|
} |
||||||
|
|
||||||
|
protected void exportPreviews(PortletDataContext portletDataContext, FileEntry fileEntry, Element fileEntryElement) |
||||||
|
throws Exception { |
||||||
|
|
||||||
|
FileVersion fileVersion = fileEntry.getFileVersion(); |
||||||
|
if (!isSupported(fileVersion) || !_hasImages(fileVersion)) { |
||||||
|
return; |
||||||
|
} |
||||||
|
if (!portletDataContext.isPerformDirectBinaryImport()) { |
||||||
|
int previewFileCount = getPreviewFileCount(fileVersion); |
||||||
|
fileEntryElement.addAttribute("bin-path-pdf-preview-count", String.valueOf(previewFileCount)); |
||||||
|
for (int i = 0; i < previewFileCount; i++) { |
||||||
|
exportPreview(portletDataContext, fileEntry, fileEntryElement, "pdf", PREVIEW_TYPE, i); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
protected List<Long> getFileVersionIds() { |
||||||
|
|
||||||
|
return _fileVersionIds; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
protected String getPreviewType(FileVersion fileVersion) { |
||||||
|
|
||||||
|
return PREVIEW_TYPE; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
protected String getThumbnailType(FileVersion fileVersion) { |
||||||
|
|
||||||
|
return THUMBNAIL_TYPE; |
||||||
|
} |
||||||
|
|
||||||
|
protected boolean hasPreview(FileVersion fileVersion) throws Exception { |
||||||
|
|
||||||
|
return hasPreview(fileVersion, null); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
protected boolean hasPreview(FileVersion fileVersion, String type) throws Exception { |
||||||
|
|
||||||
|
String previewFilePath = getPreviewFilePath(fileVersion, 1); |
||||||
|
return DLStoreUtil.hasFile(fileVersion.getCompanyId(), REPOSITORY_ID, previewFilePath); |
||||||
|
} |
||||||
|
|
||||||
|
protected void importPreviews(PortletDataContext portletDataContext, FileEntry fileEntry, |
||||||
|
FileEntry importedFileEntry, Element fileEntryElement) throws Exception { |
||||||
|
|
||||||
|
int previewFileCount = GetterUtil.getInteger(fileEntryElement.attributeValue("bin-path-pdf-preview-count")); |
||||||
|
for (int i = 0; i < previewFileCount; i++) { |
||||||
|
importPreview(portletDataContext, fileEntry, importedFileEntry, fileEntryElement, "pdf", PREVIEW_TYPE, i); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private void _generateImages(FileVersion fileVersion, File file) throws Exception { |
||||||
|
|
||||||
|
if (GhostscriptUtil.isEnabled()) { |
||||||
|
if (!_ghostscriptInitialized) { |
||||||
|
GhostscriptUtil.reset(); |
||||||
|
_ghostscriptInitialized = true; |
||||||
|
} |
||||||
|
_generateImagesGS(fileVersion, file); |
||||||
|
} else { |
||||||
|
_generateImagesPB(fileVersion, file); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private void _generateImages(FileVersion sourceFileVersion, FileVersion destinationFileVersion) throws Exception { |
||||||
|
|
||||||
|
InputStream inputStream = null; |
||||||
|
try { |
||||||
|
if (sourceFileVersion != null) { |
||||||
|
copy(sourceFileVersion, destinationFileVersion); |
||||||
|
return; |
||||||
|
} |
||||||
|
if (_hasImages(destinationFileVersion)) { |
||||||
|
return; |
||||||
|
} |
||||||
|
String extension = destinationFileVersion.getExtension(); |
||||||
|
if (extension.equalsIgnoreCase("p7m")) { |
||||||
|
inputStream = destinationFileVersion.getContentStream(false); |
||||||
|
File p7m = File.createTempFile("p7m-input", ".p7m"); |
||||||
|
FileUtils.copyInputStreamToFile(inputStream, p7m); |
||||||
|
File pdf = _extractPdfFromP7m(p7m); |
||||||
|
_generateImages(destinationFileVersion, pdf); |
||||||
|
pdf.delete(); |
||||||
|
p7m.delete(); |
||||||
|
} else if (extension.equalsIgnoreCase("pdf")) { |
||||||
|
if (destinationFileVersion instanceof LiferayFileVersion) { |
||||||
|
try { |
||||||
|
LiferayFileVersion liferayFileVersion = (LiferayFileVersion) destinationFileVersion; |
||||||
|
File file = liferayFileVersion.getFile(false); |
||||||
|
_generateImages(destinationFileVersion, file); |
||||||
|
return; |
||||||
|
} catch (UnsupportedOperationException uoe) {} |
||||||
|
} |
||||||
|
inputStream = destinationFileVersion.getContentStream(false); |
||||||
|
_generateImages(destinationFileVersion, inputStream); |
||||||
|
} else if (DocumentConversionUtil.isEnabled()) { |
||||||
|
inputStream = destinationFileVersion.getContentStream(false); |
||||||
|
String tempFileId = DLUtil.getTempFileId(destinationFileVersion.getFileEntryId(), |
||||||
|
destinationFileVersion.getVersion()); |
||||||
|
File file = DocumentConversionUtil.convert(tempFileId, inputStream, extension, "pdf"); |
||||||
|
_generateImages(destinationFileVersion, file); |
||||||
|
} |
||||||
|
} catch (NoSuchFileEntryException nsfee) {} finally { |
||||||
|
StreamUtil.cleanUp(inputStream); |
||||||
|
_fileVersionIds.remove(destinationFileVersion.getFileVersionId()); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private File _extractPdfFromP7m(File p7m) throws Exception { |
||||||
|
|
||||||
|
// openssl smime -verify -noverify -in document.pdf.p7m -inform DER -out document.pdf
|
||||||
|
File pdf = File.createTempFile("p7m-output", ".pdf"); |
||||||
|
List<String> arguments = new LinkedList<>(); |
||||||
|
arguments.add("openssl"); |
||||||
|
arguments.add("smime"); |
||||||
|
arguments.add("-verify"); |
||||||
|
arguments.add("-noverify"); |
||||||
|
arguments.add("-in"); |
||||||
|
arguments.add(p7m.getAbsolutePath()); |
||||||
|
arguments.add("-inform"); |
||||||
|
arguments.add("DER"); |
||||||
|
arguments.add("-out"); |
||||||
|
arguments.add(pdf.getAbsolutePath()); |
||||||
|
Future<?> future = ProcessUtil.execute(ProcessUtil.LOGGING_OUTPUT_PROCESSOR, arguments); |
||||||
|
while (!future.isCancelled()) { |
||||||
|
if (future.isDone()) { |
||||||
|
futures.put(pdf.getAbsolutePath(), future); |
||||||
|
break; |
||||||
|
} |
||||||
|
Thread.sleep(1000); |
||||||
|
} |
||||||
|
future.get(); |
||||||
|
return pdf; |
||||||
|
} |
||||||
|
|
||||||
|
private void _generateImages(FileVersion fileVersion, InputStream inputStream) throws Exception { |
||||||
|
|
||||||
|
if (GhostscriptUtil.isEnabled()) { |
||||||
|
_generateImagesGS(fileVersion, inputStream); |
||||||
|
} else { |
||||||
|
_generateImagesPB(fileVersion, inputStream); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private void _generateImagesGS(FileVersion fileVersion, File file) throws Exception { |
||||||
|
|
||||||
|
if (_isGeneratePreview(fileVersion)) { |
||||||
|
StopWatch stopWatch = new StopWatch(); |
||||||
|
stopWatch.start(); |
||||||
|
_generateImagesGS(fileVersion, file, false); |
||||||
|
if (_log.isDebugEnabled()) { |
||||||
|
int previewFileCount = getPreviewFileCount(fileVersion); |
||||||
|
_log.debug("Ghostscript generated " + previewFileCount + " preview pages for " + fileVersion.getTitle() |
||||||
|
+ " in " + stopWatch.getTime() + " ms"); |
||||||
|
} |
||||||
|
} |
||||||
|
if (_isGenerateThumbnail(fileVersion)) { |
||||||
|
StopWatch stopWatch = new StopWatch(); |
||||||
|
stopWatch.start(); |
||||||
|
_generateImagesGS(fileVersion, file, true); |
||||||
|
if (_log.isDebugEnabled()) { |
||||||
|
_log.debug("Ghostscript generated a thumbnail for " + fileVersion.getTitle() + " in " |
||||||
|
+ stopWatch.getTime() + " ms"); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private void _generateImagesGS(FileVersion fileVersion, File file, boolean thumbnail) throws Exception { |
||||||
|
|
||||||
|
// Generate images
|
||||||
|
String tempFileId = DLUtil.getTempFileId(fileVersion.getFileEntryId(), fileVersion.getVersion()); |
||||||
|
List<String> arguments = new ArrayList<String>(); |
||||||
|
arguments.add("-sDEVICE=png16m"); |
||||||
|
if (thumbnail) { |
||||||
|
arguments.add("-sOutputFile=" + getThumbnailTempFilePath(tempFileId)); |
||||||
|
arguments.add("-dFirstPage=1"); |
||||||
|
arguments.add("-dLastPage=1"); |
||||||
|
} else { |
||||||
|
arguments.add("-sOutputFile=" + getPreviewTempFilePath(tempFileId, -1)); |
||||||
|
} |
||||||
|
arguments.add("-dPDFFitPage"); |
||||||
|
arguments.add("-dTextAlphaBits=4"); |
||||||
|
arguments.add("-dGraphicsAlphaBits=4"); |
||||||
|
arguments.add("-r" + PropsValues.DL_FILE_ENTRY_PREVIEW_DOCUMENT_DPI); |
||||||
|
if (PropsValues.DL_FILE_ENTRY_PREVIEW_DOCUMENT_MAX_WIDTH != 0) { |
||||||
|
arguments.add("-dDEVICEWIDTH=" + PropsValues.DL_FILE_ENTRY_PREVIEW_DOCUMENT_MAX_WIDTH); |
||||||
|
} |
||||||
|
if (PropsValues.DL_FILE_ENTRY_PREVIEW_DOCUMENT_MAX_HEIGHT != 0) { |
||||||
|
arguments.add("-dDEVICEHEIGHT=" + PropsValues.DL_FILE_ENTRY_PREVIEW_DOCUMENT_MAX_HEIGHT); |
||||||
|
} |
||||||
|
arguments.add(file.getPath()); |
||||||
|
Future<?> future = GhostscriptUtil.execute(arguments); |
||||||
|
String processIdentity = String.valueOf(fileVersion.getFileVersionId()); |
||||||
|
while (!future.isCancelled()) { |
||||||
|
if (future.isDone()) { |
||||||
|
futures.put(processIdentity, future); |
||||||
|
break; |
||||||
|
} |
||||||
|
Thread.sleep(1000); |
||||||
|
} |
||||||
|
future.get(); |
||||||
|
// Store images
|
||||||
|
if (thumbnail) { |
||||||
|
File thumbnailTempFile = getThumbnailTempFile(tempFileId); |
||||||
|
try { |
||||||
|
storeThumbnailImages(fileVersion, thumbnailTempFile); |
||||||
|
} finally { |
||||||
|
FileUtil.delete(thumbnailTempFile); |
||||||
|
} |
||||||
|
} else { |
||||||
|
int total = getPreviewTempFileCount(fileVersion); |
||||||
|
for (int i = 0; i < total; i++) { |
||||||
|
File previewTempFile = getPreviewTempFile(tempFileId, i + 2); |
||||||
|
try { |
||||||
|
addFileToStore(fileVersion.getCompanyId(), PREVIEW_PATH, getPreviewFilePath(fileVersion, i + 1), |
||||||
|
previewTempFile); |
||||||
|
} finally { |
||||||
|
FileUtil.delete(previewTempFile); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private void _generateImagesGS(FileVersion fileVersion, InputStream inputStream) throws Exception { |
||||||
|
|
||||||
|
File file = null; |
||||||
|
try { |
||||||
|
file = FileUtil.createTempFile(inputStream); |
||||||
|
_generateImagesGS(fileVersion, file); |
||||||
|
} finally { |
||||||
|
FileUtil.delete(file); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private void _generateImagesPB(FileVersion fileVersion, File file) throws Exception { |
||||||
|
|
||||||
|
String tempFileId = DLUtil.getTempFileId(fileVersion.getFileEntryId(), fileVersion.getVersion()); |
||||||
|
File thumbnailFile = getThumbnailTempFile(tempFileId); |
||||||
|
int previewFilesCount = 0; |
||||||
|
PDDocument pdDocument = null; |
||||||
|
try { |
||||||
|
pdDocument = PDDocument.load(file); |
||||||
|
previewFilesCount = pdDocument.getNumberOfPages(); |
||||||
|
} finally { |
||||||
|
if (pdDocument != null) { |
||||||
|
pdDocument.close(); |
||||||
|
} |
||||||
|
} |
||||||
|
File[] previewFiles = new File[previewFilesCount]; |
||||||
|
for (int i = 0; i < previewFilesCount; i++) { |
||||||
|
previewFiles[i] = getPreviewTempFile(tempFileId, i); |
||||||
|
} |
||||||
|
boolean generatePreview = _isGeneratePreview(fileVersion); |
||||||
|
boolean generateThumbnail = _isGenerateThumbnail(fileVersion); |
||||||
|
if (PropsValues.DL_FILE_ENTRY_PREVIEW_FORK_PROCESS_ENABLED) { |
||||||
|
ProcessCallable<String> processCallable = new LiferayPDFBoxProcessCallable(ServerDetector.getServerId(), |
||||||
|
PropsUtil.get(PropsKeys.LIFERAY_HOME), Log4JUtil.getCustomLogSettings(), file, thumbnailFile, |
||||||
|
previewFiles, getThumbnailType(fileVersion), getPreviewType(fileVersion), |
||||||
|
PropsValues.DL_FILE_ENTRY_PREVIEW_DOCUMENT_DPI, |
||||||
|
PropsValues.DL_FILE_ENTRY_PREVIEW_DOCUMENT_MAX_HEIGHT, |
||||||
|
PropsValues.DL_FILE_ENTRY_PREVIEW_DOCUMENT_MAX_WIDTH, generatePreview, generateThumbnail); |
||||||
|
Future<String> future = ProcessExecutor.execute(ClassPathUtil.getPortalClassPath(), processCallable); |
||||||
|
String processIdentity = String.valueOf(fileVersion.getFileVersionId()); |
||||||
|
futures.put(processIdentity, future); |
||||||
|
future.get(); |
||||||
|
} else { |
||||||
|
LiferayPDFBoxConverter liferayConverter = new LiferayPDFBoxConverter(file, thumbnailFile, previewFiles, |
||||||
|
getPreviewType(fileVersion), getThumbnailType(fileVersion), |
||||||
|
PropsValues.DL_FILE_ENTRY_PREVIEW_DOCUMENT_DPI, |
||||||
|
PropsValues.DL_FILE_ENTRY_PREVIEW_DOCUMENT_MAX_HEIGHT, |
||||||
|
PropsValues.DL_FILE_ENTRY_PREVIEW_DOCUMENT_MAX_WIDTH, generatePreview, generateThumbnail); |
||||||
|
liferayConverter.generateImagesPB(); |
||||||
|
} |
||||||
|
if (generateThumbnail) { |
||||||
|
try { |
||||||
|
storeThumbnailImages(fileVersion, thumbnailFile); |
||||||
|
} finally { |
||||||
|
FileUtil.delete(thumbnailFile); |
||||||
|
} |
||||||
|
if (_log.isDebugEnabled()) { |
||||||
|
_log.debug("PDFBox generated a thumbnail for " + fileVersion.getFileVersionId()); |
||||||
|
} |
||||||
|
} |
||||||
|
if (generatePreview) { |
||||||
|
int index = 0; |
||||||
|
for (File previewFile : previewFiles) { |
||||||
|
try { |
||||||
|
addFileToStore(fileVersion.getCompanyId(), PREVIEW_PATH, |
||||||
|
getPreviewFilePath(fileVersion, index + 1), previewFile); |
||||||
|
} finally { |
||||||
|
FileUtil.delete(previewFile); |
||||||
|
} |
||||||
|
index++; |
||||||
|
} |
||||||
|
if (_log.isDebugEnabled()) { |
||||||
|
_log.debug("PDFBox generated " + getPreviewFileCount(fileVersion) + " preview pages for " |
||||||
|
+ fileVersion.getFileVersionId()); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private void _generateImagesPB(FileVersion fileVersion, InputStream inputStream) throws Exception { |
||||||
|
|
||||||
|
File file = null; |
||||||
|
try { |
||||||
|
file = FileUtil.createTempFile(inputStream); |
||||||
|
_generateImagesPB(fileVersion, file); |
||||||
|
} finally { |
||||||
|
FileUtil.delete(file); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private boolean _hasImages(FileVersion fileVersion) throws Exception { |
||||||
|
|
||||||
|
if (PropsValues.DL_FILE_ENTRY_PREVIEW_ENABLED) { |
||||||
|
if (!hasPreview(fileVersion)) { |
||||||
|
return false; |
||||||
|
} |
||||||
|
} |
||||||
|
return hasThumbnails(fileVersion); |
||||||
|
} |
||||||
|
|
||||||
|
private boolean _isGeneratePreview(FileVersion fileVersion) throws Exception { |
||||||
|
|
||||||
|
return PropsValues.DL_FILE_ENTRY_PREVIEW_ENABLED && !hasPreview(fileVersion); |
||||||
|
} |
||||||
|
|
||||||
|
private boolean _isGenerateThumbnail(FileVersion fileVersion) throws Exception { |
||||||
|
|
||||||
|
return PropsValues.DL_FILE_ENTRY_THUMBNAIL_ENABLED && !hasThumbnail(fileVersion, THUMBNAIL_INDEX_DEFAULT); |
||||||
|
} |
||||||
|
|
||||||
|
private void _queueGeneration(FileVersion sourceFileVersion, FileVersion destinationFileVersion) { |
||||||
|
|
||||||
|
if (_fileVersionIds.contains(destinationFileVersion.getFileVersionId())) { |
||||||
|
return; |
||||||
|
} |
||||||
|
boolean generateImages = false; |
||||||
|
String extension = destinationFileVersion.getExtension(); |
||||||
|
if (extension.equalsIgnoreCase("pdf") || extension.equalsIgnoreCase("p7m")) { |
||||||
|
generateImages = true; |
||||||
|
} else if (DocumentConversionUtil.isEnabled()) { |
||||||
|
String[] conversions = DocumentConversionUtil.getConversions(extension); |
||||||
|
for (String conversion : conversions) { |
||||||
|
if (conversion.equals("pdf")) { |
||||||
|
generateImages = true; |
||||||
|
break; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
if (generateImages) { |
||||||
|
_fileVersionIds.add(destinationFileVersion.getFileVersionId()); |
||||||
|
sendGenerationMessage(DestinationNames.DOCUMENT_LIBRARY_PDF_PROCESSOR, sourceFileVersion, |
||||||
|
destinationFileVersion); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private static Log _log = LogFactoryUtil.getLog(SiciliaP7MProcessor.class); |
||||||
|
|
||||||
|
private List<Long> _fileVersionIds = new Vector<Long>(); |
||||||
|
private boolean _ghostscriptInitialized = false; |
||||||
|
|
||||||
|
private static class LiferayPDFBoxProcessCallable implements ProcessCallable<String> { |
||||||
|
|
||||||
|
public LiferayPDFBoxProcessCallable(String serverId, String liferayHome, Map<String, String> customLogSettings, |
||||||
|
File inputFile, File thumbnailFile, File[] previewFiles, String extension, String thumbnailExtension, |
||||||
|
int dpi, int height, int width, boolean generatePreview, boolean generateThumbnail) { |
||||||
|
|
||||||
|
_serverId = serverId; |
||||||
|
_liferayHome = liferayHome; |
||||||
|
_customLogSettings = customLogSettings; |
||||||
|
_inputFile = inputFile; |
||||||
|
_thumbnailFile = thumbnailFile; |
||||||
|
_previewFiles = previewFiles; |
||||||
|
_extension = extension; |
||||||
|
_thumbnailExtension = thumbnailExtension; |
||||||
|
_dpi = dpi; |
||||||
|
_height = height; |
||||||
|
_width = width; |
||||||
|
_generatePreview = generatePreview; |
||||||
|
_generateThumbnail = generateThumbnail; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String call() throws ProcessException { |
||||||
|
|
||||||
|
Properties systemProperties = System.getProperties(); |
||||||
|
SystemEnv.setProperties(systemProperties); |
||||||
|
Class<?> clazz = getClass(); |
||||||
|
ClassLoader classLoader = clazz.getClassLoader(); |
||||||
|
Log4JUtil.initLog4J(_serverId, _liferayHome, classLoader, new Log4jLogFactoryImpl(), _customLogSettings); |
||||||
|
try { |
||||||
|
LiferayPDFBoxConverter liferayConverter = new LiferayPDFBoxConverter(_inputFile, _thumbnailFile, |
||||||
|
_previewFiles, _extension, _thumbnailExtension, _dpi, _height, _width, _generatePreview, |
||||||
|
_generateThumbnail); |
||||||
|
liferayConverter.generateImagesPB(); |
||||||
|
} catch (Exception e) { |
||||||
|
throw new ProcessException(e); |
||||||
|
} |
||||||
|
return StringPool.BLANK; |
||||||
|
} |
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L; |
||||||
|
|
||||||
|
private Map<String, String> _customLogSettings; |
||||||
|
private int _dpi; |
||||||
|
private String _extension; |
||||||
|
private boolean _generatePreview; |
||||||
|
private boolean _generateThumbnail; |
||||||
|
private int _height; |
||||||
|
private File _inputFile; |
||||||
|
private String _liferayHome; |
||||||
|
private File[] _previewFiles; |
||||||
|
private String _serverId; |
||||||
|
private String _thumbnailExtension; |
||||||
|
private File _thumbnailFile; |
||||||
|
private int _width; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,7 @@ |
|||||||
|
dl.file.entry.processors= \ |
||||||
|
it.mwg.sicilia.preview.SiciliaP7MProcessor |
||||||
|
dl.file.entry.processors2= \ |
||||||
|
com.liferay.portlet.documentlibrary.util.ImageProcessorImpl, \ |
||||||
|
it.mwg.sicilia.preview.SiciliaP7MProcessor, \ |
||||||
|
com.liferay.portlet.documentlibrary.util.RawMetadataProcessorImpl |
||||||
|
|
@ -0,0 +1 @@ |
|||||||
|
dummy=off |
@ -0,0 +1,3 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<web-app id="WebApp_ID" version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> |
||||||
|
</web-app> |
@ -0,0 +1,18 @@ |
|||||||
|
<?xml version="1.0"?> |
||||||
|
|
||||||
|
<ivy-module |
||||||
|
version="2.0" |
||||||
|
xmlns:m2="http://ant.apache.org/ivy/maven" |
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||||
|
xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd" |
||||||
|
> |
||||||
|
<info module="sicilia-p7m-preview-hook" organisation="com.liferay"> |
||||||
|
<extends extendType="configurations,description,info" location="../../ivy.xml" module="com.liferay.sdk" organisation="com.liferay" revision="latest.integration" /> |
||||||
|
</info> |
||||||
|
|
||||||
|
<dependencies defaultconf="default"> |
||||||
|
<dependency conf="test->default" name="arquillian-junit-container" org="org.jboss.arquillian.junit" rev="1.1.6.Final" /> |
||||||
|
<dependency conf="test->default" name="arquillian-tomcat-remote-7" org="org.jboss.arquillian.container" rev="1.0.0.CR6" /> |
||||||
|
<dependency conf="test->default" name="com.liferay.ant.arquillian" org="com.liferay" rev="1.0.0" /> |
||||||
|
</dependencies> |
||||||
|
</ivy-module> |
@ -0,0 +1 @@ |
|||||||
|
9127728e0d6e6ef2db51aa670a9da3b8 |
@ -0,0 +1,15 @@ |
|||||||
|
<?xml version="1.0"?> |
||||||
|
|
||||||
|
<arquillian |
||||||
|
xmlns="http://jboss.org/schema/arquillian" |
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||||
|
xsi:schemaLocation="http://jboss.org/schema/arquillian http://jboss.org/schema/arquillian/arquillian_1_0.xsd" |
||||||
|
> |
||||||
|
<container default="true" qualifier="tomcat"> |
||||||
|
<configuration> |
||||||
|
<property name="jmxPort">8099</property> |
||||||
|
<property name="pass">tomcat</property> |
||||||
|
<property name="user">tomcat</property> |
||||||
|
</configuration> |
||||||
|
</container> |
||||||
|
</arquillian> |
File binario non mostrato.
File binario non mostrato.
Caricamento…
Reference in new issue