You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by jl...@apache.org on 2010/09/23 14:47:14 UTC

svn commit: r1000434 - in /ofbiz/trunk/framework/common: script/org/ofbiz/common/CommonServices.xml servicedef/services.xml webcommon/WEB-INF/common-controller.xml

Author: jleroux
Date: Thu Sep 23 12:47:14 2010
New Revision: 1000434

URL: http://svn.apache.org/viewvc?rev=1000434&view=rev
Log:
Fixes the linkGeos service. It was able not remove, it was only creating.

Introduce a new getRelatedGeos service which will be used soon in the Webtools/Geo mnagement. It comes from the jQuery branch and I have still not rewritten the jQuery to Prototype part. This should make smoother next merge from trunk in jQuery branch

Modified:
    ofbiz/trunk/framework/common/script/org/ofbiz/common/CommonServices.xml
    ofbiz/trunk/framework/common/servicedef/services.xml
    ofbiz/trunk/framework/common/webcommon/WEB-INF/common-controller.xml

Modified: ofbiz/trunk/framework/common/script/org/ofbiz/common/CommonServices.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/common/script/org/ofbiz/common/CommonServices.xml?rev=1000434&r1=1000433&r2=1000434&view=diff
==============================================================================
--- ofbiz/trunk/framework/common/script/org/ofbiz/common/CommonServices.xml (original)
+++ ofbiz/trunk/framework/common/script/org/ofbiz/common/CommonServices.xml Thu Sep 23 12:47:14 2010
@@ -263,21 +263,65 @@ under the License.
             <field-to-list list="stateList" field="stateName"/>
         </iterate>
         <if-empty field="stateList">
-            <property-to-field resource="CommonUiLabels" property="CommonNoStatesProvinces" field="noOption"/>
-            <field-to-list list="stateList" field="noOption"/>
+            <property-to-field resource="CommonUiLabels" property="CommonNoStatesProvinces" field="noOptions"/>
+            <field-to-list list="stateList" field="noOptions"/>
         </if-empty>
         <field-to-result field="stateList"/>
     </simple-method>
 
     <simple-method method-name="linkGeos" short-description="Link Geos to another Geo">
-        <iterate list="parameters.geoIds" entry="geoId">
-            <make-value value-field="newGeoAssoc" entity-name="GeoAssoc"/>
-            <set field="newGeoAssoc.geoId" from-field="geoId"/>
-            <set field="newGeoAssoc.geoIdTo" from-field="parameters.geoId"/>
-            <set field="newGeoAssoc.geoAssocTypeId" from-field="parameters.geoAssocTypeId"/>
-            <create-value value-field="newGeoAssoc"/>
-            <check-errors/>            
+        <entity-and entity-name="GeoAssoc" list="geoAssocs">
+            <field-map field-name="geoIdTo" from-field="parameters.geoId"/>
+        </entity-and>
+        <!-- Current list contains old values? -->
+        <iterate list="geoAssocs" entry="geoAssoc">
+            <if-compare-field field="parameters.geoIds" operator="contains" to-field="geoAssoc.geoId">
+                <!-- Yes, nothing to do, it already exists and we keep it -->
+                <else><!-- Remove -->
+                    <entity-one entity-name="GeoAssoc" value-field="oldGeoAssoc">
+                        <field-map field-name="geoId" from-field="geoAssoc.geoId"/>
+                        <field-map field-name="geoIdTo" from-field="parameters.geoId"/>
+                    </entity-one>
+                    <remove-value value-field="oldGeoAssoc"/>
+                </else>                
+            </if-compare-field>
         </iterate>
+        <!-- Old list contains current values -->
+        <iterate list="parameters.geoIds" entry="geoId">            
+            <if-compare-field field="oldGeoIds" operator="contains" to-field="geoId">
+                <!-- Yes, nothing to do, it already exists and we keep it -->
+                <else> 
+                    <entity-one entity-name="GeoAssoc" value-field="oldGeoAssoc">
+                        <field-map field-name="geoId" from-field="geoId"/>
+                        <field-map field-name="geoIdTo" from-field="parameters.geoId"/>
+                    </entity-one>
+                    <if-empty field="oldGeoAssoc">                    
+                        <!-- Add as it does not exist -->
+                        <make-value value-field="newGeoAssoc" entity-name="GeoAssoc"/>
+                        <set field="newGeoAssoc.geoId" from-field="geoId"/>
+                        <set field="newGeoAssoc.geoIdTo" from-field="parameters.geoId"/>
+                        <set field="newGeoAssoc.geoAssocTypeId" from-field="parameters.geoAssocTypeId"/>
+                        <create-value value-field="newGeoAssoc"/>
+                    </if-empty>
+                </else>
+            </if-compare-field>
+        </iterate>
+        <check-errors/>
     </simple-method>
+
+    <simple-method method-name="getRelatedGeos" short-description="get related geos to a geo through a geoAssoc" login-required="false">      
+        <entity-and entity-name="GeoAssoc" list="geoAssoc">
+            <field-map field-name="geoIdTo" from-field="parameters.geoId"/>
+            <field-map field-name="geoAssocTypeId" from-field="parameters.geoAssocTypeId"/>
+        </entity-and>
+        <iterate list="geoAssoc" entry="geo">
+            <field-to-list list="geoList" field="geo.geoId"/>
+        </iterate>
+        <if-empty field="geoList">
+            <property-to-field resource="CommonUiLabels" property="CommonNoOptions" field="noOptions"/>
+            <field-to-list list="geoList" field="noOptions"/>
+        </if-empty>
+        <field-to-result field="geoList"/>
+    </simple-method>    
     
 </simple-methods>

Modified: ofbiz/trunk/framework/common/servicedef/services.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/common/servicedef/services.xml?rev=1000434&r1=1000433&r2=1000434&view=diff
==============================================================================
--- ofbiz/trunk/framework/common/servicedef/services.xml (original)
+++ ofbiz/trunk/framework/common/servicedef/services.xml Thu Sep 23 12:47:14 2010
@@ -711,9 +711,9 @@ under the License.
         location="component://common/script/org/ofbiz/common/CommonServices.xml" invoke="linkGeos">        
         <description>Link Geos to another Geo</description>
         <permission-service service-name="commonGenericPermission" main-action="CREATE"/>
-        <attribute name="geoIds" type="List" mode="IN"></attribute>
-        <attribute name="geoId" type="String" mode="IN"></attribute>
-        <attribute name="geoAssocTypeId" type="String" mode="IN"></attribute>
+        <attribute name="geoIds" type="List" mode="IN" optional="true"/>
+        <attribute name="geoId" type="String" mode="IN"/>
+        <attribute name="geoAssocTypeId" type="String" mode="IN"/>
     </service>
     
     <!-- GeoPoint services -->
@@ -753,4 +753,12 @@ under the License.
         <attribute name="listOrderBy" mode="IN" type="String" optional="true"/>
         <attribute name="stateList" mode="OUT" type="java.util.List"/>
     </service>
+    
+    <service name="getRelatedGeos" engine="simple" auth="false"
+        location="component://common/script/org/ofbiz/common/CommonServices.xml" invoke="getRelatedGeos">
+        <attribute name="geoId" mode="IN" type="String"/>
+        <attribute name="geoAssocTypeId" mode="IN" type="String"/>        
+        <attribute name="geoList" mode="OUT" type="java.util.List"/>
+    </service>
+    
 </services>

Modified: ofbiz/trunk/framework/common/webcommon/WEB-INF/common-controller.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/common/webcommon/WEB-INF/common-controller.xml?rev=1000434&r1=1000433&r2=1000434&view=diff
==============================================================================
--- ofbiz/trunk/framework/common/webcommon/WEB-INF/common-controller.xml (original)
+++ ofbiz/trunk/framework/common/webcommon/WEB-INF/common-controller.xml Thu Sep 23 12:47:14 2010
@@ -211,6 +211,13 @@ under the License.
         <response name="success" type="request" value="json"/>
         <response name="error" type="request" value="json"/>
     </request-map>    
+
+    <request-map uri="getRelatedGeos">
+        <security https="true" auth="true"/>
+        <event type="service" invoke="getRelatedGeos"/>
+        <response name="success" type="request" value="json"/>
+        <response name="error" type="request" value="json"/>
+    </request-map>
     <!--========================== AJAX events =====================-->