|
Author: lektran
Date: Thu Mar 3 07:51:41 2011 New Revision: 1076549 URL: http://svn.apache.org/viewvc?rev=1076549&view=rev Log: Add support for uploading files using dataResourceTypeId OFBIZ_FILE using the attachUploadToDataResource service Modified: ofbiz/trunk/applications/content/script/org/ofbiz/content/data/DataServices.xml ofbiz/trunk/applications/content/src/org/ofbiz/content/data/DataResourceWorker.java Modified: ofbiz/trunk/applications/content/script/org/ofbiz/content/data/DataServices.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/content/script/org/ofbiz/content/data/DataServices.xml?rev=1076549&r1=1076548&r2=1076549&view=diff ============================================================================== --- ofbiz/trunk/applications/content/script/org/ofbiz/content/data/DataServices.xml (original) +++ ofbiz/trunk/applications/content/script/org/ofbiz/content/data/DataServices.xml Thu Mar 3 07:51:41 2011 @@ -633,6 +633,11 @@ under the License. <return/> </if-compare> + <if-compare field="parameters.dataResourceTypeId" value="OFBIZ_FILE" operator="equals"> + <call-simple-method method-name="saveOfbizFileDataResource"/> + <return/> + </if-compare> + <if-compare field="parameters.dataResourceTypeId" value="IMAGE_OBJECT" operator="equals"> <entity-one entity-name="ImageDataResource" value-field="dataResObj"> <field-map field-name="dataResourceId" from-field="parameters.dataResourceId"/> @@ -750,6 +755,76 @@ under the License. <field-to-result result-name="mimeTypeId" field="dataResource.mimeTypeId"/> </simple-method> + <!-- save OFBIZ_FILE data --> + <simple-method method-name="saveOfbizFileDataResource" short-description="Attach an uploaded file to a data resource as OFBIZ_FILE"> + <entity-one entity-name="DataResource" value-field="dataResource"/> + <if-empty field="dataResource"> + <add-error> + <fail-property resource="ContentUiLabels" property="ContentDataResourceNotFound"/> + </add-error> + <else> + <if-not-empty field="dataResource.objectInfo"> + <set field="isUpdate" value="Y"/> + </if-not-empty> + </else> + </if-empty> + <if> + <condition> + <if-empty field="parameters._uploadedFile_fileName"/> + </condition> + <then> + <if> + <condition> + <or> + <if-empty field="isUpdate"/> + <if-compare field="isUpdate" value="Y" operator="not-equals"/> + </or> + </condition> + <then> + <add-error> + <fail-property resource="ContentUiLabels" property="ContentNoUploadedContentFound"/> + </add-error> + </then> + <else> + <!-- if not upload is found on an update; its okay, don't do anything just return --> + <field-to-result result-name="dataResourceId" field="dataResource.dataResourceId"/> + <field-to-result result-name="mimeTypeId" field="dataResource.mimeTypeId"/> + <return/> + </else> + </if> + + </then> + </if> + <check-errors/> + + <set field="absolute" value="false" type="Boolean"/> + <call-class-method class-name="org.ofbiz.content.data.DataResourceWorker" method-name="getDataResourceContentUploadPath" ret-field="uploadPath"> + <field field="absolute"/> + </call-class-method> + <log level="info" message="[attachLocalFileToDataResource] - Found Subdir : ${uploadPath}"/> + + <set from-field="parameters._uploadedFile_contentType" field="extenLookup.mimeTypeId"/> + <find-by-and entity-name="FileExtension" map="extenLookup" list="extensions"/> + <first-from-list entry="extension" list="extensions"/> + + <set from-field="parameters._uploadedFile_fileName" field="dataResource.dataResourceName"/> + <set from-field="parameters._uploadedFile_contentType" field="dataResource.mimeTypeId"/> + <set value="${uploadPath}/${dataResource.dataResourceId}" field="dataResource.objectInfo"/> + <if-not-empty field="extension"> + <set value="${uploadPath}/${dataResource.dataResourceId}.${extension.fileExtensionId}" field="dataResource.objectInfo"/> + </if-not-empty> + <set value="OFBIZ_FILE" field="dataResource.dataResourceTypeId"/> + <store-value value-field="dataResource"/> + + <set-service-fields service-name="createAnonFile" map="dataResource" to-map="fileCtx"/> + <set from-field="parameters.uploadedFile" field="fileCtx.binData"/> + <set from-field="dataResource" field="fileCtx.dataResource"/> + <call-service service-name="createAnonFile" in-map-name="fileCtx" include-user-login="true"/> + + <field-to-result result-name="dataResourceId" field="dataResource.dataResourceId"/> + <field-to-result result-name="mimeTypeId" field="dataResource.mimeTypeId"/> + </simple-method> + <!-- save OTHER_OBJECT data --> <simple-method method-name="saveOtherObjectDateResource" short-description="Attach an uploaded file to a data resource as OTHER_OBJECT"> <entity-one entity-name="DataResource" value-field="dataResource"> Modified: ofbiz/trunk/applications/content/src/org/ofbiz/content/data/DataResourceWorker.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/content/src/org/ofbiz/content/data/DataResourceWorker.java?rev=1076549&r1=1076548&r2=1076549&view=diff ============================================================================== --- ofbiz/trunk/applications/content/src/org/ofbiz/content/data/DataResourceWorker.java (original) +++ ofbiz/trunk/applications/content/src/org/ofbiz/content/data/DataResourceWorker.java Thu Mar 3 07:51:41 2011 @@ -459,6 +459,10 @@ public class DataResourceWorker impleme } public static String getDataResourceContentUploadPath() { + return getDataResourceContentUploadPath(true); + } + + public static String getDataResourceContentUploadPath(boolean absolute) { String initialPath = UtilProperties.getPropertyValue("content.properties", "content.upload.path.prefix"); double maxFiles = UtilProperties.getPropertyNumber("content.properties", "content.upload.max.files"); if (maxFiles < 1) { @@ -468,13 +472,17 @@ public class DataResourceWorker impleme return getDataResourceContentUploadPath(initialPath, maxFiles); } + public static String getDataResourceContentUploadPath(String initialPath, double maxFiles) { + return getDataResourceContentUploadPath(initialPath, maxFiles, true); + } + /** * Handles creating sub-directories for file storage; using a max number of files per directory * @param initialPath the top level location where all files should be stored * @param maxFiles the max number of files to place in a directory * @return the absolute path to the directory where the file should be placed */ - public static String getDataResourceContentUploadPath(String initialPath, double maxFiles) { + public static String getDataResourceContentUploadPath(String initialPath, double maxFiles, boolean absolute) { String ofbizHome = System.getProperty("ofbiz.home"); if (!initialPath.startsWith("/")) { @@ -527,7 +535,12 @@ public class DataResourceWorker impleme } Debug.log("Directory Name : " + latestDir.getName(), module); - return latestDir.getAbsolutePath().replace('\\','/'); + if (absolute) { + return latestDir.getAbsolutePath().replace('\\','/'); + } else { + return initialPath + "/" + latestDir.getName(); + + } } private static File makeNewDirectory(File parent) { |
| Free forum by Nabble | Edit this page |
