Removed DefaultColumnNamingStrategy in favor of a factory method Project: http://git-wip-us.apache.org/repos/asf/metamodel/repo Commit: http://git-wip-us.apache.org/repos/asf/metamodel/commit/c1e1d52f Tree: http://git-wip-us.apache.org/repos/asf/metamodel/tree/c1e1d52f Diff: http://git-wip-us.apache.org/repos/asf/metamodel/diff/c1e1d52f
Branch: refs/heads/5.x Commit: c1e1d52f9517f2a60c7d04033445517abbda0bbc Parents: 28cd2cd Author: kaspersorensen <[email protected]> Authored: Tue Apr 26 12:08:47 2016 -0700 Committer: kaspersorensen <[email protected]> Committed: Tue Apr 26 12:08:47 2016 -0700 ---------------------------------------------------------------------- ...tingIntrinsicSwitchColumnNamingStrategy.java | 64 -------------------- .../schema/naming/ColumnNamingStrategies.java | 35 +++++++++++ .../naming/DefaultColumnNamingStrategy.java | 35 ----------- ...tingIntrinsicSwitchColumnNamingStrategy.java | 60 ++++++++++++++++++ .../naming/DefaultColumnNamingStrategyTest.java | 7 +-- .../apache/metamodel/csv/CsvConfiguration.java | 4 +- .../fixedwidth/FixedWidthConfiguration.java | 4 +- 7 files changed, 101 insertions(+), 108 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/metamodel/blob/c1e1d52f/core/src/main/java/org/apache/metamodel/schema/builder/DelegatingIntrinsicSwitchColumnNamingStrategy.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/metamodel/schema/builder/DelegatingIntrinsicSwitchColumnNamingStrategy.java b/core/src/main/java/org/apache/metamodel/schema/builder/DelegatingIntrinsicSwitchColumnNamingStrategy.java deleted file mode 100644 index 4fa5d30..0000000 --- a/core/src/main/java/org/apache/metamodel/schema/builder/DelegatingIntrinsicSwitchColumnNamingStrategy.java +++ /dev/null @@ -1,64 +0,0 @@ -/** - * 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 - * - * 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.apache.metamodel.schema.builder; - -import org.apache.metamodel.schema.naming.ColumnNamingContext; -import org.apache.metamodel.schema.naming.ColumnNamingSession; -import org.apache.metamodel.schema.naming.ColumnNamingStrategy; - -/** - * A {@link ColumnNamingStrategy} that switches between two other - * {@link ColumnNamingStrategy} delegates depending on the availability of a - * intrinsic column name. - */ -public class DelegatingIntrinsicSwitchColumnNamingStrategy implements ColumnNamingStrategy { - - private static final long serialVersionUID = 1L; - private final ColumnNamingStrategy intrinsicStrategy; - private final ColumnNamingStrategy nonIntrinsicStrategy; - - public DelegatingIntrinsicSwitchColumnNamingStrategy(ColumnNamingStrategy intrinsicStrategy, - ColumnNamingStrategy nonIntrinsicStrategy) { - this.intrinsicStrategy = intrinsicStrategy; - this.nonIntrinsicStrategy = nonIntrinsicStrategy; - } - - @Override - public ColumnNamingSession startColumnNamingSession() { - final ColumnNamingSession intrinsicSession = intrinsicStrategy.startColumnNamingSession(); - final ColumnNamingSession nonIntrinsicSession = nonIntrinsicStrategy.startColumnNamingSession(); - return new ColumnNamingSession() { - - @Override - public String getNextColumnName(ColumnNamingContext ctx) { - final String intrinsicColumnName = ctx.getIntrinsicColumnName(); - if (intrinsicColumnName == null || intrinsicColumnName.isEmpty()) { - return nonIntrinsicSession.getNextColumnName(ctx); - } - return intrinsicSession.getNextColumnName(ctx); - } - - @Override - public void close() { - intrinsicSession.close(); - nonIntrinsicSession.close(); - } - }; - } -} http://git-wip-us.apache.org/repos/asf/metamodel/blob/c1e1d52f/core/src/main/java/org/apache/metamodel/schema/naming/ColumnNamingStrategies.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/metamodel/schema/naming/ColumnNamingStrategies.java b/core/src/main/java/org/apache/metamodel/schema/naming/ColumnNamingStrategies.java new file mode 100644 index 0000000..de78338 --- /dev/null +++ b/core/src/main/java/org/apache/metamodel/schema/naming/ColumnNamingStrategies.java @@ -0,0 +1,35 @@ +/** + * 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 + * + * 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.apache.metamodel.schema.naming; + +/** + * Constructors and common utilities for {@link ColumnNamingStrategy} objects. + */ +public class ColumnNamingStrategies { + + private static final DelegatingIntrinsicSwitchColumnNamingStrategy DEFAULT_STRATEGY = new DelegatingIntrinsicSwitchColumnNamingStrategy( + new UniqueColumnNamingStrategy(), new AlphabeticColumnNamingStrategy()); + + private ColumnNamingStrategies() { + } + + public static ColumnNamingStrategy defaultStrategy() { + return DEFAULT_STRATEGY; + } +} http://git-wip-us.apache.org/repos/asf/metamodel/blob/c1e1d52f/core/src/main/java/org/apache/metamodel/schema/naming/DefaultColumnNamingStrategy.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/metamodel/schema/naming/DefaultColumnNamingStrategy.java b/core/src/main/java/org/apache/metamodel/schema/naming/DefaultColumnNamingStrategy.java deleted file mode 100644 index f0bcb23..0000000 --- a/core/src/main/java/org/apache/metamodel/schema/naming/DefaultColumnNamingStrategy.java +++ /dev/null @@ -1,35 +0,0 @@ -/** - * 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 - * - * 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.apache.metamodel.schema.naming; - -import org.apache.metamodel.schema.builder.DelegatingIntrinsicSwitchColumnNamingStrategy; - -/** - * The default (in most cases) {@link ColumnNamingStrategy} to use when no other - * strategy is specified. - */ -public class DefaultColumnNamingStrategy extends DelegatingIntrinsicSwitchColumnNamingStrategy { - - private static final long serialVersionUID = 1L; - - public DefaultColumnNamingStrategy() { - super(new UniqueColumnNamingStrategy(), new AlphabeticColumnNamingStrategy()); - } - -} http://git-wip-us.apache.org/repos/asf/metamodel/blob/c1e1d52f/core/src/main/java/org/apache/metamodel/schema/naming/DelegatingIntrinsicSwitchColumnNamingStrategy.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/metamodel/schema/naming/DelegatingIntrinsicSwitchColumnNamingStrategy.java b/core/src/main/java/org/apache/metamodel/schema/naming/DelegatingIntrinsicSwitchColumnNamingStrategy.java new file mode 100644 index 0000000..e18cb3a --- /dev/null +++ b/core/src/main/java/org/apache/metamodel/schema/naming/DelegatingIntrinsicSwitchColumnNamingStrategy.java @@ -0,0 +1,60 @@ +/** + * 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 + * + * 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.apache.metamodel.schema.naming; + +/** + * A {@link ColumnNamingStrategy} that switches between two other + * {@link ColumnNamingStrategy} delegates depending on the availability of a + * intrinsic column name. + */ +public class DelegatingIntrinsicSwitchColumnNamingStrategy implements ColumnNamingStrategy { + + private static final long serialVersionUID = 1L; + private final ColumnNamingStrategy intrinsicStrategy; + private final ColumnNamingStrategy nonIntrinsicStrategy; + + public DelegatingIntrinsicSwitchColumnNamingStrategy(ColumnNamingStrategy intrinsicStrategy, + ColumnNamingStrategy nonIntrinsicStrategy) { + this.intrinsicStrategy = intrinsicStrategy; + this.nonIntrinsicStrategy = nonIntrinsicStrategy; + } + + @Override + public ColumnNamingSession startColumnNamingSession() { + final ColumnNamingSession intrinsicSession = intrinsicStrategy.startColumnNamingSession(); + final ColumnNamingSession nonIntrinsicSession = nonIntrinsicStrategy.startColumnNamingSession(); + return new ColumnNamingSession() { + + @Override + public String getNextColumnName(ColumnNamingContext ctx) { + final String intrinsicColumnName = ctx.getIntrinsicColumnName(); + if (intrinsicColumnName == null || intrinsicColumnName.isEmpty()) { + return nonIntrinsicSession.getNextColumnName(ctx); + } + return intrinsicSession.getNextColumnName(ctx); + } + + @Override + public void close() { + intrinsicSession.close(); + nonIntrinsicSession.close(); + } + }; + } +} http://git-wip-us.apache.org/repos/asf/metamodel/blob/c1e1d52f/core/src/test/java/org/apache/metamodel/schema/naming/DefaultColumnNamingStrategyTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/metamodel/schema/naming/DefaultColumnNamingStrategyTest.java b/core/src/test/java/org/apache/metamodel/schema/naming/DefaultColumnNamingStrategyTest.java index a293939..eb618c2 100644 --- a/core/src/test/java/org/apache/metamodel/schema/naming/DefaultColumnNamingStrategyTest.java +++ b/core/src/test/java/org/apache/metamodel/schema/naming/DefaultColumnNamingStrategyTest.java @@ -18,16 +18,13 @@ */ package org.apache.metamodel.schema.naming; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; -import org.apache.metamodel.schema.naming.ColumnNamingContextImpl; -import org.apache.metamodel.schema.naming.ColumnNamingSession; -import org.apache.metamodel.schema.naming.DefaultColumnNamingStrategy; import org.junit.Test; public class DefaultColumnNamingStrategyTest { - private final DefaultColumnNamingStrategy namingStrategy = new DefaultColumnNamingStrategy(); + private final ColumnNamingStrategy namingStrategy = ColumnNamingStrategies.defaultStrategy(); @Test public void testDuplicateColumnNames() throws Exception { http://git-wip-us.apache.org/repos/asf/metamodel/blob/c1e1d52f/csv/src/main/java/org/apache/metamodel/csv/CsvConfiguration.java ---------------------------------------------------------------------- diff --git a/csv/src/main/java/org/apache/metamodel/csv/CsvConfiguration.java b/csv/src/main/java/org/apache/metamodel/csv/CsvConfiguration.java index dd1c8ac..abcf2d4 100644 --- a/csv/src/main/java/org/apache/metamodel/csv/CsvConfiguration.java +++ b/csv/src/main/java/org/apache/metamodel/csv/CsvConfiguration.java @@ -21,8 +21,8 @@ package org.apache.metamodel.csv; import java.io.Serializable; import java.util.List; +import org.apache.metamodel.schema.naming.ColumnNamingStrategies; import org.apache.metamodel.schema.naming.ColumnNamingStrategy; -import org.apache.metamodel.schema.naming.DefaultColumnNamingStrategy; import org.apache.metamodel.util.BaseObject; import org.apache.metamodel.util.FileHelper; @@ -103,7 +103,7 @@ public final class CsvConfiguration extends BaseObject implements Serializable { */ public ColumnNamingStrategy getColumnNamingStrategy() { if (columnNamingStrategy == null) { - return new DefaultColumnNamingStrategy(); + return ColumnNamingStrategies.defaultStrategy(); } return columnNamingStrategy; } http://git-wip-us.apache.org/repos/asf/metamodel/blob/c1e1d52f/fixedwidth/src/main/java/org/apache/metamodel/fixedwidth/FixedWidthConfiguration.java ---------------------------------------------------------------------- diff --git a/fixedwidth/src/main/java/org/apache/metamodel/fixedwidth/FixedWidthConfiguration.java b/fixedwidth/src/main/java/org/apache/metamodel/fixedwidth/FixedWidthConfiguration.java index bbdd0ad..6e9f0f1 100644 --- a/fixedwidth/src/main/java/org/apache/metamodel/fixedwidth/FixedWidthConfiguration.java +++ b/fixedwidth/src/main/java/org/apache/metamodel/fixedwidth/FixedWidthConfiguration.java @@ -23,8 +23,8 @@ import java.util.Arrays; import java.util.List; import org.apache.metamodel.data.DataSet; +import org.apache.metamodel.schema.naming.ColumnNamingStrategies; import org.apache.metamodel.schema.naming.ColumnNamingStrategy; -import org.apache.metamodel.schema.naming.DefaultColumnNamingStrategy; import org.apache.metamodel.util.BaseObject; import org.apache.metamodel.util.FileHelper; @@ -100,7 +100,7 @@ public final class FixedWidthConfiguration extends BaseObject implements */ public ColumnNamingStrategy getColumnNamingStrategy() { if (columnNamingStrategy == null) { - return new DefaultColumnNamingStrategy(); + return ColumnNamingStrategies.defaultStrategy(); } return columnNamingStrategy; }
