This is an automated email from the ASF dual-hosted git repository.
mbrohl pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/ofbiz-framework.git
The following commit(s) were added to refs/heads/trunk by this push:
new e7420fe4cf Improvements for ContentWorker methods and view-entities
(OFBIZ-12829)
e7420fe4cf is described below
commit e7420fe4cf40f21e03bba3566d9b99d63a6e79a5
Author: Cheng Hu Shan <[email protected]>
AuthorDate: Thu Jun 15 13:56:26 2023 +0200
Improvements for ContentWorker methods and view-entities (OFBIZ-12829)
---
.../ofbiz/content/content/ContentWorker.java | 45 +++++++++++++++-------
.../datamodel/entitydef/product-entitymodel.xml | 4 +-
2 files changed, 33 insertions(+), 16 deletions(-)
diff --git
a/applications/content/src/main/java/org/apache/ofbiz/content/content/ContentWorker.java
b/applications/content/src/main/java/org/apache/ofbiz/content/content/ContentWorker.java
index 4f4171d786..f8a6f8953b 100644
---
a/applications/content/src/main/java/org/apache/ofbiz/content/content/ContentWorker.java
+++
b/applications/content/src/main/java/org/apache/ofbiz/content/content/ContentWorker.java
@@ -411,7 +411,33 @@ public class ContentWorker implements
org.apache.ofbiz.widget.content.ContentWor
}
}
+ public static List<GenericValue> findAlternateLocaleContents(Delegator
delegator, GenericValue view) {
+ return findAlternateLocaleContents(delegator, view, true);
+ }
+
+ public static List<GenericValue> findAlternateLocaleContents(Delegator
delegator, GenericValue view,
+ boolean useCache) {
+ List<GenericValue> alternateViews = null;
+ try {
+ alternateViews = view.getRelated("ContentAssocDataResourceViewTo",
UtilMisc.toMap("caContentAssocTypeId",
+ "ALTERNATE_LOCALE"), UtilMisc.toList("-caFromDate"),
useCache);
+
+ alternateViews = EntityUtil.filterByDate(alternateViews,
UtilDateTime.nowTimestamp(), "caFromDate",
+ "caThruDate", true);
+ } catch (GenericEntityException e) {
+ Debug.logError(e, "Error finding alternate locale content: " + e,
MODULE);
+ alternateViews = UtilMisc.toList(view);
+ }
+
+ return alternateViews;
+ }
+
public static GenericValue findAlternateLocaleContent(Delegator delegator,
GenericValue view, Locale locale) {
+ return findAlternateLocaleContent(delegator, view, locale, true);
+ }
+
+ public static GenericValue findAlternateLocaleContent(Delegator delegator,
GenericValue view, Locale locale,
+ boolean useCache) {
GenericValue contentAssocDataResourceViewFrom = null;
if (locale == null) {
return view;
@@ -420,16 +446,7 @@ public class ContentWorker implements
org.apache.ofbiz.widget.content.ContentWor
String localeStr = locale.toString();
boolean isTwoLetterLocale = localeStr.length() == 2;
- List<GenericValue> alternateViews = null;
- try {
- alternateViews = view.getRelated("ContentAssocDataResourceViewTo",
UtilMisc.toMap("caContentAssocTypeId", "ALTERNATE_LOCALE"),
- UtilMisc.toList("-caFromDate"), true);
- } catch (GenericEntityException e) {
- Debug.logError(e, "Error finding alternate locale content: " +
e.toString(), MODULE);
- return view;
- }
-
- alternateViews = EntityUtil.filterByDate(alternateViews,
UtilDateTime.nowTimestamp(), "caFromDate", "caThruDate", true);
+ List<GenericValue> alternateViews =
findAlternateLocaleContents(delegator, view, useCache);
// also check the given view for a matching locale
alternateViews.add(0, view);
@@ -445,25 +462,25 @@ public class ContentWorker implements
org.apache.ofbiz.widget.content.ContentWor
if (isTwoLetterLocale) {
if (currentLocaleLength == 2) {
// if the currentLocaleString is only a two letter code
and the current one is a two and it matches, we are done
- if (localeStr.equals(currentLocaleString)) {
+ if (localeStr.equalsIgnoreCase(currentLocaleString)) {
contentAssocDataResourceViewFrom = thisView;
break;
}
} else if (currentLocaleLength == 5) {
// if the currentLocaleString is only a two letter code
and the current one is a five, match up but keep going
- if (localeStr.equals(currentLocaleString.substring(0, 2)))
{
+ if
(localeStr.equalsIgnoreCase(currentLocaleString.substring(0, 2))) {
contentAssocDataResourceViewFrom = thisView;
}
}
} else {
if (currentLocaleLength == 2) {
// if the currentLocaleString is a five letter code and
the current one is a two and it matches, keep going
- if (localeStr.substring(0, 2).equals(currentLocaleString))
{
+ if (localeStr.substring(0,
2).equalsIgnoreCase(currentLocaleString)) {
contentAssocDataResourceViewFrom = thisView;
}
} else if (currentLocaleLength == 5) {
// if the currentLocaleString is a five letter code and
the current one is a five, if it matches we are done
- if (localeStr.equals(currentLocaleString)) {
+ if (localeStr.equalsIgnoreCase(currentLocaleString)) {
contentAssocDataResourceViewFrom = thisView;
break;
}
diff --git a/applications/datamodel/entitydef/product-entitymodel.xml
b/applications/datamodel/entitydef/product-entitymodel.xml
index 6adaa70f0d..560d1d45ad 100644
--- a/applications/datamodel/entitydef/product-entitymodel.xml
+++ b/applications/datamodel/entitydef/product-entitymodel.xml
@@ -286,7 +286,7 @@ under the License.
<view-link entity-alias="PCC" rel-entity-alias="CO">
<key-map field-name="contentId"/>
</view-link>
- <view-link entity-alias="CO" rel-entity-alias="DR">
+ <view-link entity-alias="CO" rel-entity-alias="DR" rel-optional="true">
<key-map field-name="dataResourceId"/>
</view-link>
<relation type="one-nofk" rel-entity-name="ElectronicText">
@@ -3104,7 +3104,7 @@ under the License.
<view-link entity-alias="PC" rel-entity-alias="CO">
<key-map field-name="contentId"/>
</view-link>
- <view-link entity-alias="CO" rel-entity-alias="DR">
+ <view-link entity-alias="CO" rel-entity-alias="DR" rel-optional="true">
<key-map field-name="dataResourceId"/>
</view-link>
<relation type="one-nofk" rel-entity-name="ElectronicText">