You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by ja...@apache.org on 2006/12/29 21:03:56 UTC

svn commit: r491086 - in /ofbiz/trunk/applications/party: build.xml src/org/ofbiz/party/content/ src/org/ofbiz/party/content/PartyContentWrapper.java src/org/ofbiz/party/party/PartyWorker.java

Author: jaz
Date: Fri Dec 29 12:03:55 2006
New Revision: 491086

URL: http://svn.apache.org/viewvc?view=rev&rev=491086
Log:
implemented PartyContentWrapper; added some worker methods to PartyWorker

Added:
    ofbiz/trunk/applications/party/src/org/ofbiz/party/content/
    ofbiz/trunk/applications/party/src/org/ofbiz/party/content/PartyContentWrapper.java   (with props)
Modified:
    ofbiz/trunk/applications/party/build.xml
    ofbiz/trunk/applications/party/src/org/ofbiz/party/party/PartyWorker.java

Modified: ofbiz/trunk/applications/party/build.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/party/build.xml?view=diff&rev=491086&r1=491085&r2=491086
==============================================================================
--- ofbiz/trunk/applications/party/build.xml (original)
+++ ofbiz/trunk/applications/party/build.xml Fri Dec 29 12:03:55 2006
@@ -45,6 +45,7 @@
             <fileset dir="../../framework/service/build/lib" includes="*.jar"/>
             <fileset dir="../../framework/minilang/build/lib" includes="*.jar"/>
             <fileset dir="../../framework/common/build/lib" includes="*.jar"/>
+            <fileset dir="../content/build/lib" includes="*.jar"/>
         </path>
     </target>
 

Added: ofbiz/trunk/applications/party/src/org/ofbiz/party/content/PartyContentWrapper.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/party/src/org/ofbiz/party/content/PartyContentWrapper.java?view=auto&rev=491086
==============================================================================
--- ofbiz/trunk/applications/party/src/org/ofbiz/party/content/PartyContentWrapper.java (added)
+++ ofbiz/trunk/applications/party/src/org/ofbiz/party/content/PartyContentWrapper.java Fri Dec 29 12:03:55 2006
@@ -0,0 +1,235 @@
+/*
+ *
+ * Copyright 2001-2006 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.ofbiz.party.content;
+
+import org.ofbiz.content.content.ContentWrapper;
+import org.ofbiz.content.content.ContentWorker;
+import org.ofbiz.base.util.cache.UtilCache;
+import org.ofbiz.base.util.*;
+import org.ofbiz.entity.GenericValue;
+import org.ofbiz.entity.GenericDelegator;
+import org.ofbiz.entity.util.EntityUtil;
+import org.ofbiz.entity.model.ModelUtil;
+import org.ofbiz.entity.model.ModelEntity;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.*;
+import java.io.Writer;
+import java.io.IOException;
+import java.io.StringWriter;
+
+import javolution.util.FastList;
+import javolution.util.FastMap;
+
+/**
+ * WorkEffortContentWrapper; gets work effort content for display
+ */
+public class PartyContentWrapper implements ContentWrapper {
+
+    public static final String module = PartyContentWrapper.class.getName();
+    public static final String CACHE_KEY_SEPARATOR = "::";
+
+    public static UtilCache workEffortContentCache = new UtilCache("workeffort.content.rendered", true);
+
+    protected GenericValue party;
+    protected Locale locale;
+    protected String mimeTypeId;
+
+    public PartyContentWrapper(GenericValue party, Locale locale, String mimeTypeId) {
+        this.party = party;
+        this.locale = locale;
+        this.mimeTypeId = mimeTypeId;
+    }
+
+    public PartyContentWrapper(GenericValue party, HttpServletRequest request) {
+        this.party = party;
+        this.locale = UtilHttp.getLocale(request);
+        this.mimeTypeId = "text/html";
+    }
+
+    // interface implementation
+    public String get(String contentTypeId) {
+        return getPartyContentAsText(party, contentTypeId, locale, mimeTypeId, party.getDelegator());
+    }
+
+    public List getList(String contentTypeId) {
+        try {
+            return getPartyContentTextList(party, contentTypeId, locale, mimeTypeId, party.getDelegator());
+        } catch (Exception e) {
+            Debug.logError(e, module);
+            return null;
+        }
+    }
+
+    public String getContent(String contentId) {
+        return getPartyContentAsText(party, contentId, null, locale, mimeTypeId, party.getDelegator());
+    }
+
+    // static methods
+    public static String getPartyContentAsText(GenericValue party, String partyContentId, HttpServletRequest request) {
+        return getPartyContentAsText(party, partyContentId, UtilHttp.getLocale(request), "text/html", party.getDelegator());
+    }
+
+    public static String getPartyContentAsText(GenericValue party, String partyContentId, Locale locale) {
+        return getPartyContentAsText(party, partyContentId, locale, null, null);
+    }
+
+    public static String getPartyContentAsText(GenericValue party, String partyContentTypeId,
+            Locale locale, String mimeTypeId, GenericDelegator delegator) {
+        return getPartyContentAsText(party, null, partyContentTypeId, locale, mimeTypeId, delegator);
+    }
+
+    public static String getPartyContentAsText(GenericValue party, String contentId, String partyContentTypeId,
+            Locale locale, String mimeTypeId, GenericDelegator delegator) {
+        if (party == null) {
+            return null;
+        }
+
+        String candidateFieldName = ModelUtil.dbNameToVarName(partyContentTypeId);
+        String cacheKey;
+        if (contentId != null) {
+            cacheKey = contentId + CACHE_KEY_SEPARATOR + locale + CACHE_KEY_SEPARATOR + mimeTypeId +
+                    CACHE_KEY_SEPARATOR + party.get("partyId");
+        } else {
+            cacheKey = partyContentTypeId + CACHE_KEY_SEPARATOR + locale + CACHE_KEY_SEPARATOR + mimeTypeId +
+                    CACHE_KEY_SEPARATOR + party.get("partyId");
+        }
+
+        try {
+            if (workEffortContentCache.get(cacheKey) != null) {
+                return (String) workEffortContentCache.get(cacheKey);
+            }
+
+            Writer outWriter = new StringWriter();
+            getPartyContentAsText(contentId, party.getString("partyId"), party, partyContentTypeId, locale, mimeTypeId, delegator, outWriter);
+
+            String outString = outWriter.toString();
+            if (outString.length() > 0) {
+                if (workEffortContentCache != null) {
+                    workEffortContentCache.put(cacheKey, outString);
+                }
+                return outString;
+            } else {
+                String candidateOut = party.getModelEntity().isField(candidateFieldName) ? party.getString(candidateFieldName): "";
+                return candidateOut == null ? "" : candidateOut;
+            }
+        } catch (GeneralException e) {
+            Debug.logError(e, "Error rendering PartyContent, inserting empty String", module);
+            String candidateOut = party.getModelEntity().isField(candidateFieldName) ? party.getString(candidateFieldName): "";
+            return candidateOut == null? "" : candidateOut;
+        } catch (IOException e) {
+            Debug.logError(e, "Error rendering PartyContent, inserting empty String", module);
+            String candidateOut = party.getModelEntity().isField(candidateFieldName) ? party.getString(candidateFieldName): "";
+            return candidateOut == null? "" : candidateOut;
+        }
+    }
+
+    public static void getPartyContentAsText(String contentId, String partyId, GenericValue party, String partyContentTypeId, Locale locale, String mimeTypeId, GenericDelegator delegator, Writer outWriter) throws GeneralException, IOException {
+        if (partyId == null && party != null) {
+            partyId = party.getString("partyId");
+        }
+
+        if (delegator == null && party != null) {
+            delegator = party.getDelegator();
+        }
+
+        if (UtilValidate.isEmpty(mimeTypeId)) {
+            mimeTypeId = "text/html";
+        }
+
+        if (delegator == null) {
+            throw new GeneralRuntimeException("Unable to find a delegator to use!");
+        }
+
+        if (partyContentTypeId != null) {
+            String candidateFieldName = ModelUtil.dbNameToVarName(partyContentTypeId);
+
+            // first check for a person field
+            ModelEntity partyPersonModel = delegator.getModelEntity("PartyAndPerson");
+            if (partyPersonModel != null && partyPersonModel.isField(candidateFieldName)) {
+                if (party == null) {
+                    party = delegator.findByPrimaryKeyCache("PartyAndPerson", UtilMisc.toMap("partyId", partyId));
+                }
+                if (party != null) {
+                    String candidateValue = party.getString(candidateFieldName);
+                    if (UtilValidate.isNotEmpty(candidateValue)) {
+                        outWriter.write(candidateValue);
+                        return;
+                    }
+                }
+            }
+
+            // next check for group field
+            ModelEntity partyGroupModel = delegator.getModelEntity("PartyAndGroup");
+            if (partyGroupModel != null && partyGroupModel.isField(candidateFieldName)) {
+                if (party == null) {
+                    party = delegator.findByPrimaryKeyCache("PartyAndGroup", UtilMisc.toMap("partyId", partyId));
+                }
+                if (party != null) {
+                    String candidateValue = party.getString(candidateFieldName);
+                    if (UtilValidate.isNotEmpty(candidateValue)) {
+                        outWriter.write(candidateValue);
+                        return;
+                    }
+                }
+            }
+        }
+
+        // otherwise a content field
+        GenericValue partyContent;
+        if (contentId != null) {
+            partyContent = delegator.findByPrimaryKeyCache("PartyContent", UtilMisc.toMap("partyId", partyId, "contentId", contentId));
+        } else {
+            List partyContentList = delegator.findByAndCache("PartyContent", UtilMisc.toMap("partyId", partyId, "contentPurposeEnumId", partyContentTypeId), UtilMisc.toList("-fromDate"));
+            partyContentList = EntityUtil.filterByDate(partyContentList);
+            partyContent = EntityUtil.getFirst(partyContentList);
+        }
+        if (partyContent != null) {
+            // when rendering the product content, always include the Product and ProductContent records that this comes from
+            Map inContext = FastMap.newInstance();
+            inContext.put("party", party);
+            inContext.put("partyContent", partyContent);
+            ContentWorker.renderContentAsText(delegator, partyContent.getString("contentId"), outWriter, inContext, null, locale, mimeTypeId);
+        }
+    }
+
+    public static List getPartyContentTextList(GenericValue party, String partyContentTypeId, Locale locale, String mimeTypeId, GenericDelegator delegator) throws GeneralException, IOException {
+        List partyContentList = delegator.findByAndCache("PartyContent", UtilMisc.toMap("partyId", party.getString("partyId"), "contentPurposeEnumId", partyContentTypeId), UtilMisc.toList("-fromDate"));
+        partyContentList = EntityUtil.filterByDate(partyContentList);
+
+        List contentList = FastList.newInstance();
+        if (partyContentList != null) {
+            Iterator i = partyContentList.iterator();
+            while (i.hasNext()) {
+                GenericValue partyContent = (GenericValue) i.next();
+                StringWriter outWriter = new StringWriter();
+                Map inContext = FastMap.newInstance();
+                inContext.put("party", party);
+                inContext.put("partyContent", partyContent);
+                ContentWorker.renderContentAsText(delegator, partyContent.getString("contentId"), outWriter, inContext, null, locale, mimeTypeId);
+                contentList.add(outWriter.toString());
+            }
+        }
+
+        return contentList;
+    }
+
+    public static PartyContentWrapper makePartyContentWrapper(GenericValue party, HttpServletRequest request) {
+        return new PartyContentWrapper(party, request);
+    }
+}

Propchange: ofbiz/trunk/applications/party/src/org/ofbiz/party/content/PartyContentWrapper.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ofbiz/trunk/applications/party/src/org/ofbiz/party/content/PartyContentWrapper.java
------------------------------------------------------------------------------
    svn:keywords = "Date Rev Author URL Id"

Propchange: ofbiz/trunk/applications/party/src/org/ofbiz/party/content/PartyContentWrapper.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: ofbiz/trunk/applications/party/src/org/ofbiz/party/party/PartyWorker.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/party/src/org/ofbiz/party/party/PartyWorker.java?view=diff&rev=491086&r1=491085&r2=491086
==============================================================================
--- ofbiz/trunk/applications/party/src/org/ofbiz/party/party/PartyWorker.java (original)
+++ ofbiz/trunk/applications/party/src/org/ofbiz/party/party/PartyWorker.java Fri Dec 29 12:03:55 2006
@@ -22,6 +22,7 @@
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
+import java.sql.Timestamp;
 import javax.servlet.ServletRequest;
 import javax.servlet.jsp.PageContext;
 
@@ -113,6 +114,37 @@
         return clubId;
     }
 
+    public static GenericValue findPartyLatestContactMech(String partyId, String contactMechTypeId, GenericDelegator delegator) {
+        try {
+            List cmList = delegator.findByAnd("PartyAndContactMech", UtilMisc.toMap("partyId", partyId, "contactMechTypeId", contactMechTypeId), UtilMisc.toList("-fromDate"));
+            cmList = EntityUtil.filterByDate(cmList);
+            return EntityUtil.getFirst(cmList);
+        } catch (GenericEntityException e) {
+            Debug.logError(e, "Error while finding latest ContactMech for party with ID [" + partyId + "] TYPE [" + contactMechTypeId + "]: " + e.toString(), module);
+            return null;
+        }
+    }
+
+    public static GenericValue findPartyLatestPostalAddress(String partyId, GenericDelegator delegator) {
+        GenericValue pcm = findPartyLatestContactMech(partyId, "POSTAL_ADDRESS", delegator);
+        try {
+            return pcm.getRelatedOne("PostalAddress");
+        } catch (GenericEntityException e) {
+            Debug.logError(e, "Error while finding latest PostalAddress for party with ID [" + partyId + "]: " + e.toString(), module);
+            return null;
+        }
+    }
+
+    public static GenericValue findPartyLatestTelecomNumber(String partyId, GenericDelegator delegator) {
+        GenericValue pcm = findPartyLatestContactMech(partyId, "TELECOM_NUMBER", delegator);
+        try {
+            return pcm.getRelatedOne("TelecomNumber");
+        } catch (GenericEntityException e) {
+            Debug.logError(e, "Error while finding latest TelecomNumber for party with ID [" + partyId + "]: " + e.toString(), module);
+            return null;
+        }
+    }
+
     public static GenericValue findPartyLatestUserLogin(String partyId, GenericDelegator delegator) {
         try {
             List userLoginList = delegator.findByAnd("UserLogin", UtilMisc.toMap("partyId", partyId), UtilMisc.toList("-" + ModelEntity.STAMP_FIELD));
@@ -122,7 +154,23 @@
             return null;
         }
     }
-    
+
+    public static Timestamp findPartyLastLoginTime(String partyId, GenericDelegator delegator) {
+        try {
+            List loginHistory = delegator.findByAnd("UserLoginHistory", UtilMisc.toMap("partyId", partyId), UtilMisc.toList("-fromDate"));
+            GenericValue v = EntityUtil.getFirst(loginHistory);
+            if (v != null) {
+                return v.getTimestamp("fromDate");
+            } else {
+                return null;
+            }            
+        } catch (GenericEntityException e) {
+            Debug.logError(e, "Error while finding latest login time for party with ID [" + partyId + "]: " + e.toString(), module);
+            return null;
+        }
+        
+    }
+
     public static Locale findPartyLastLocale(String partyId, GenericDelegator delegator) {
         // just get the most recent UserLogin for this party, if there is one...
         GenericValue userLogin = findPartyLatestUserLogin(partyId, delegator);