/* * Copyright 2012 SFB 632. * * Licensed 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 annis.sqlgen; import java.util.List; import java.util.Map; import java.util.Properties; /** * Matched nodes that are too far apart to be shown in the same context * (distance > context_left+context_right) normally create islands * ("..." is displayed between the tokens). * * This class contains an enum which is used to configure the behavior of * ANNIS in this case. * @author Benjamin Weißenfels <b.pixeldrama@gmail.com> */ public class IslandsPolicy { private String defaultIslandsPolicy; /** * Define behavior for matched nodes that are too far away. */ public enum IslandPolicies { /** * Use the context as the base to determine how far a node can be away from * a matched node in order to be included in the result. */ context, /** Never produce islands, always include all nodes between the matched nodes. */ none } public IslandPolicies getMostRestrictivePolicy(List<Long> corpora, Map<Long, Properties> props) { if (corpora.isEmpty()) { return IslandPolicies.valueOf(defaultIslandsPolicy); } IslandPolicies[] all = IslandPolicies.values(); IslandPolicies result = all[all.length - 1]; for (Long l : corpora) { IslandPolicies newPolicy = IslandPolicies.valueOf(defaultIslandsPolicy); if (props.get(l) != null) { newPolicy = IslandPolicies.valueOf(props.get(l).getProperty("islands-policy", defaultIslandsPolicy)); } if (newPolicy.ordinal() < result.ordinal()) { result = newPolicy; } } return result; } public String getDefaultIslandsPolicy() { return defaultIslandsPolicy; } public void setDefaultIslandsPolicy(String defaultIslandsPolicy) { this.defaultIslandsPolicy = defaultIslandsPolicy; } }