You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sis.apache.org by de...@apache.org on 2016/04/13 18:35:56 UTC

svn commit: r1738969 - /sis/branches/JDK8/core/sis-feature/src/main/java/org/apache/sis/feature/AggregateOperation.java

Author: desruisseaux
Date: Wed Apr 13 16:35:56 2016
New Revision: 1738969

URL: http://svn.apache.org/viewvc?rev=1738969&view=rev
Log:
Replace foreign file header by the Apache one.
Fix the parameter group name and apply some code formatting.

Modified:
    sis/branches/JDK8/core/sis-feature/src/main/java/org/apache/sis/feature/AggregateOperation.java

Modified: sis/branches/JDK8/core/sis-feature/src/main/java/org/apache/sis/feature/AggregateOperation.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-feature/src/main/java/org/apache/sis/feature/AggregateOperation.java?rev=1738969&r1=1738968&r2=1738969&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-feature/src/main/java/org/apache/sis/feature/AggregateOperation.java [UTF-8] (original)
+++ sis/branches/JDK8/core/sis-feature/src/main/java/org/apache/sis/feature/AggregateOperation.java [UTF-8] Wed Apr 13 16:35:56 2016
@@ -1,26 +1,23 @@
 /*
- *    Geotoolkit - An Open Source Java GIS Toolkit
- *    http://www.geotoolkit.org
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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
  *
- *    (C) 2015, Geomatys
+ *     http://www.apache.org/licenses/LICENSE-2.0
  *
- *    This library is free software; you can redistribute it and/or
- *    modify it under the terms of the GNU Lesser General Public
- *    License as published by the Free Software Foundation;
- *    version 2.1 of the License.
- *
- *    This library is distributed in the hope that it will be useful,
- *    but WITHOUT ANY WARRANTY; without even the implied warranty of
- *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- *    Lesser General Public License for more details.
+ * 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.apache.sis.feature;
 
-import java.util.Collections;
 import java.util.Map;
-import static org.apache.sis.feature.AbstractIdentifiedType.NAME_KEY;
-import static org.apache.sis.feature.LinkOperation.parameters;
-import org.apache.sis.util.ObjectConverters;
+import java.util.Collections;
 import org.opengis.feature.AttributeType;
 import org.opengis.feature.Feature;
 import org.opengis.feature.FeatureType;
@@ -30,15 +27,17 @@ import org.opengis.feature.Property;
 import org.opengis.parameter.ParameterDescriptorGroup;
 import org.opengis.parameter.ParameterValueGroup;
 import org.opengis.util.GenericName;
+import org.apache.sis.util.ObjectConverters;
+
 
 /**
- * An aggregate operation concatenate the values of multiple properties.
- * This operation is mainly used as an id generator for multiple primary key properties.
- * <br>
- * This operation support both reading and writing. When setting the operation value,
- * the value will be split and forwarded to each attribute element.
+ * An aggregate operation concatenating the values of multiple properties.
+ * This operation is mainly used as an {@code id} generator for multiple properties used as primary keys.
  *
- * @author Johann Sorel (Geomatys)
+ * <p>This operation support both reading and writing. When setting the operation value,
+ * the value will be split and forwarded to each attribute element.</p>
+ *
+ * @author  Johann Sorel (Geomatys)
  * @since   0.7
  * @version 0.7
  * @module
@@ -48,14 +47,17 @@ final class AggregateOperation extends A
      * For cross-version compatibility.
      */
     private static final long serialVersionUID = 2303047827010821381L;
-    
+
+    /**
+     * The type of the result returned by the aggregate operation.
+     */
     private static final AttributeType<String> TYPE = new DefaultAttributeType<>(
-            Collections.singletonMap(NAME_KEY, "String"),String.class,1,1,null);
+            Collections.singletonMap(DefaultAttributeType.NAME_KEY, "String"), String.class, 1, 1, null);
 
     /**
      * The parameter descriptor for the "Aggregate" operation, which does not take any parameter.
      */
-    private static final ParameterDescriptorGroup EMPTY_PARAMS = parameters("Link", 1);
+    private static final ParameterDescriptorGroup EMPTY_PARAMS = LinkOperation.parameters("Aggregate", 1);
 
     private final GenericName[] attributeNames;
     private final String prefix;
@@ -65,8 +67,8 @@ final class AggregateOperation extends A
     AggregateOperation(Map<String, ?> identification, String prefix, String suffix, String separator, GenericName ... attributeNames) {
         super(identification);
         this.attributeNames = attributeNames;
-        this.prefix = prefix==null ? "" : prefix;
-        this.suffix = suffix==null ? "" : suffix;
+        this.prefix = (prefix == null) ? "" : prefix;
+        this.suffix = (suffix == null) ? "" : suffix;
         this.separator = separator;
     }
 
@@ -111,7 +113,7 @@ final class AggregateOperation extends A
     private final class AggregateAttribute extends AbstractAttribute<String> {
 
         private final Feature feature;
-        
+
         public AggregateAttribute(final Feature feature) {
             super(TYPE);
             this.feature = feature;
@@ -122,8 +124,8 @@ final class AggregateOperation extends A
             final StringBuilder sb = new StringBuilder();
             sb.append(prefix);
 
-            for(int i=0;i<attributeNames.length;i++){
-                if(i!=0) sb.append(separator);
+            for (int i=0; i < attributeNames.length; i++) {
+                if (i!=0) sb.append(separator);
                 sb.append(feature.getPropertyValue(attributeNames[i].toString()));
             }
 
@@ -134,23 +136,25 @@ final class AggregateOperation extends A
         @Override
         public void setValue(String value) {
             //check prefix
-            if(!value.startsWith(prefix)){
+            if (!value.startsWith(prefix)) {
                 throw new IllegalArgumentException("Unvalid string, does not start with "+prefix);
             }
-            if(!value.endsWith(suffix)){
+            if (!value.endsWith(suffix)) {
                 throw new IllegalArgumentException("Unvalid string, does not end with "+suffix);
             }
 
             //split values, we don't use the regex split to avoid possible reserverd regex characters
             final Object[] values = new Object[attributeNames.length];
-            int i=0;
+            int i = 0;
             int offset = 0;
             //remove prefix and suffix
-            value = value.substring(prefix.length(), value.length()-suffix.length());
-            while(true){
-                if(i>=values.length) throw new IllegalArgumentException("Unvalid string, expected "+values.length+" values, but found more");
-                final int idx = value.indexOf(separator,offset);
-                if (idx==-1) {
+            value = value.substring(prefix.length(), value.length() - suffix.length());
+            while (true) {
+                if (i >= values.length) {
+                    throw new IllegalArgumentException("Unvalid string, expected "+values.length+" values, but found more");
+                }
+                final int idx = value.indexOf(separator, offset);
+                if (idx == -1) {
                     //last element
                     values[i] = value.substring(offset);
                     i++;
@@ -162,20 +166,18 @@ final class AggregateOperation extends A
                 }
             }
 
-            if(i!=values.length){
+            if (i != values.length) {
                 throw new IllegalArgumentException("Unvalid string, number of values do not match, found "+(i)+" but expected "+values.length);
             }
 
             //set values, convert them if necessary
             final FeatureType type = feature.getType();
-            for(int k=0;k<values.length;k++){
+            for (int k=0; k < values.length; k++) {
                 final String propName = attributeNames[k].toString();
-                final AttributeType pt = (AttributeType) type.getProperty(propName);
+                final AttributeType<?> pt = (AttributeType<?>) type.getProperty(propName);
                 final Object val = ObjectConverters.convert(values[k], pt.getValueClass());
                 feature.setPropertyValue(propName, val);
             }
         }
-        
     }
-    
 }