📄 contentservices.java
字号:
/*
* $Id: ContentServices.java,v 1.16 2004/01/17 03:57:46 byersa Exp $
*
* Copyright (c) 2001, 2002 The Open For Business Project - www.ofbiz.org
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT
* OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
* THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package org.ofbiz.content.content;
import java.io.IOException;
import java.io.Writer;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import org.ofbiz.base.util.Debug;
import org.ofbiz.base.util.GeneralException;
import org.ofbiz.base.util.UtilDateTime;
import org.ofbiz.base.util.UtilMisc;
import org.ofbiz.base.util.UtilValidate;
import org.ofbiz.content.webapp.ftl.FreeMarkerWorker;
import org.ofbiz.entity.GenericDelegator;
import org.ofbiz.entity.GenericEntityException;
import org.ofbiz.entity.GenericValue;
import org.ofbiz.entity.condition.EntityConditionList;
import org.ofbiz.entity.condition.EntityExpr;
import org.ofbiz.entity.condition.EntityOperator;
import org.ofbiz.service.DispatchContext;
import org.ofbiz.service.GenericServiceException;
import org.ofbiz.service.LocalDispatcher;
import org.ofbiz.service.ServiceUtil;
/**
* ContentServices Class
*
* @author <a href="mailto:byersa@automationgroups.com">Al Byers</a>
* @version $Revision: 1.16 $
* @since 2.2
*
*
*/
public class ContentServices {
public static final String module = ContentServices.class.getName();
/**
* findRelatedContent Finds the related
*/
public static Map findRelatedContent(DispatchContext dctx, Map context) {
Map results = new HashMap();
LocalDispatcher dispatcher = dctx.getDispatcher();
GenericValue currentContent = (GenericValue) context.get("currentContent");
String fromDate = (String) context.get("fromDate");
String thruDate = (String) context.get("thruDate");
String toFrom = (String) context.get("toFrom");
if (toFrom == null) {
toFrom = "TO";
} else {
toFrom = toFrom.toUpperCase();
}
List assocTypes = (List) context.get("contentAssocTypeList");
List targetOperations = (List) context.get("targetOperationList");
List contentList = null;
List contentTypes = (List) context.get("contentTypeList");
try {
contentList = ContentWorker.getAssociatedContent(currentContent, toFrom, assocTypes, contentTypes, fromDate, thruDate);
} catch (GenericEntityException e) {
return ServiceUtil.returnError("Error getting associated content: " + e.toString());
}
if (targetOperations == null || targetOperations.isEmpty()) {
results.put("contentList", contentList);
return results;
}
Map serviceInMap = new HashMap();
serviceInMap.put("userLogin", context.get("userLogin"));
serviceInMap.put("targetOperationList", targetOperations);
serviceInMap.put("entityOperation", context.get("entityOperation"));
List permittedList = new ArrayList();
Iterator it = contentList.iterator();
Map permResults = null;
while (it.hasNext()) {
GenericValue content = (GenericValue) it.next();
serviceInMap.put("currentContent", content);
try {
permResults = dispatcher.runSync("checkContentPermission", serviceInMap);
} catch (GenericServiceException e) {
Debug.logError(e, "Problem checking permissions", "ContentServices");
return ServiceUtil.returnError("Problem checking permissions");
}
String permissionStatus = (String) permResults.get("permissionStatus");
if (permissionStatus != null && permissionStatus.equalsIgnoreCase("granted")) {
permittedList.add(content);
}
}
results.put("contentList", permittedList);
return results;
}
/**
* This is a generic service for traversing a Content tree, typical of a blog response tree. It calls the ContentWorker.traverse method.
*/
public static Map traverseContent(DispatchContext dctx, Map context) {
HashMap results = new HashMap();
GenericDelegator delegator = dctx.getDelegator();
String contentId = (String) context.get("contentId");
String direction = (String) context.get("direction");
if (direction != null && direction.equalsIgnoreCase("From")) {
direction = "From";
} else {
direction = "To";
}
//Debug.logVerbose("contentId(start):" + contentId, null);
if (contentId == null)
contentId = "PUBLISH_ROOT";
GenericValue content = null;
try {
content = delegator.findByPrimaryKey("Content", UtilMisc.toMap("contentId", contentId));
} catch (GenericEntityException e) {
System.out.println("Entity Error:" + e.getMessage());
return ServiceUtil.returnError("Error in retrieving Content. " + e.getMessage());
}
//Debug.logVerbose("content(start):" + content, null);
String fromDateStr = (String) context.get("fromDateStr");
String thruDateStr = (String) context.get("thruDateStr");
Timestamp fromDate = null;
if (fromDateStr != null && fromDateStr.length() > 0) {
fromDate = UtilDateTime.toTimestamp(fromDateStr);
}
Timestamp thruDate = null;
if (thruDateStr != null && thruDateStr.length() > 0) {
thruDate = UtilDateTime.toTimestamp(thruDateStr);
}
Map whenMap = new HashMap();
whenMap.put("followWhen", context.get("followWhen"));
whenMap.put("pickWhen", context.get("pickWhen"));
whenMap.put("returnBeforePickWhen", context.get("returnBeforePickWhen"));
whenMap.put("returnAfterPickWhen", context.get("returnAfterPickWhen"));
String startContentAssocTypeId = (String) context.get("contentAssocTypeId");
if (startContentAssocTypeId != null)
startContentAssocTypeId = "PUBLISH";
Map nodeMap = new HashMap();
List pickList = new ArrayList();
//Debug.logVerbose("whenMap(start):" + whenMap,null);
ContentWorker.traverse(delegator, content, fromDate, thruDate, whenMap, 0, nodeMap, startContentAssocTypeId, pickList, direction);
//Debug.logVerbose("After travers",null);
results.put("nodeMap", nodeMap);
results.put("pickList", pickList);
return results;
}
/**
* Create a Content service. The work is done in a separate method so that complex services that need this functionality do not need to incur the
* reflection performance penalty.
*/
public static Map createContent(DispatchContext dctx, Map context) {
context.put("entityOperation", "_CREATE");
List targetOperations = new ArrayList();
targetOperations.add("CREATE_CONTENT");
context.put("targetOperationList", targetOperations);
context.put("skipPermissionCheck", null);
Map result = createContentMethod(dctx, context);
return result;
}
/**
* Create a Content method. The work is done in this separate method so that complex services that need this functionality do not need to incur the
* reflection performance penalty.
*/
public static Map createContentMethod(DispatchContext dctx, Map context) {
Map result = new HashMap();
GenericDelegator delegator = dctx.getDelegator();
LocalDispatcher dispatcher = dctx.getDispatcher();
String contentId = (String) context.get("contentId");
//String contentTypeId = (String) context.get("contentTypeId");
if (UtilValidate.isEmpty(contentId))
contentId = delegator.getNextSeqId("Content").toString();
GenericValue content = delegator.makeValue("Content", UtilMisc.toMap("contentId", contentId));
content.setNonPKFields(context);
context.put("currentContent", content);
String permissionStatus = ContentWorker.callContentPermissionCheck(delegator, dispatcher, context);
if (permissionStatus != null && permissionStatus.equalsIgnoreCase("granted")) {
GenericValue userLogin = (GenericValue) context.get("userLogin");
String userLoginId = (String) userLogin.get("userLoginId");
String createdByUserLogin = userLoginId;
String lastModifiedByUserLogin = userLoginId;
Timestamp createdDate = UtilDateTime.nowTimestamp();
Timestamp lastModifiedDate = UtilDateTime.nowTimestamp();
content.put("createdByUserLogin", createdByUserLogin);
content.put("lastModifiedByUserLogin", lastModifiedByUserLogin);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -