2
* Copyright (C) 2008 Steve Ratcliffe
4
* This program is free software; you can redistribute it and/or modify
5
* it under the terms of the GNU General Public License version 2 as
6
* published by the Free Software Foundation.
8
* This program is distributed in the hope that it will be useful,
9
* but WITHOUT ANY WARRANTY; without even the implied warranty of
10
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
* GNU General Public License for more details.
14
* Author: Steve Ratcliffe
15
* Create date: 15-Nov-2008
17
package uk.me.parabola.mkgmap.osmstyle;
19
import java.util.List;
21
import uk.me.parabola.mkgmap.osmstyle.actions.Action;
22
import uk.me.parabola.mkgmap.osmstyle.eval.Op;
23
import uk.me.parabola.mkgmap.reader.osm.Element;
24
import uk.me.parabola.mkgmap.reader.osm.GType;
25
import uk.me.parabola.mkgmap.reader.osm.Rule;
28
* An action rule modifies the tags on the incoming element.
30
* It can also have an expression, and does not need to have a Type. If
31
* there is no type then the resolve method always returns false. The tags
32
* on the element may have been modified however.
34
* @author Steve Ratcliffe
36
public class ActionRule implements Rule {
37
private final Op expression;
38
private final List<Action> actions;
39
private final GType type;
41
public ActionRule(Op expression, List<Action> actions, GType type) {
42
assert actions != null;
43
this.expression = expression;
44
this.actions = actions;
48
public ActionRule(Op expression, List<Action> actions) {
49
assert actions != null;
50
this.expression = expression;
51
this.actions = actions;
55
public GType resolveType(Element el) {
56
if (expression == null || expression.eval(el)) {
57
for (Action a : actions)
65
public String toString() {
66
StringBuilder fmt = new StringBuilder();
67
if (expression != null)
68
fmt.append(expression);
71
for (Action a : actions)
80
return fmt.toString();