package org.osmtools.osmchange;
import org.osmtools.osc.Create;
import org.osmtools.osc.Delete;
import org.osmtools.osc.Modify;
import org.osmtools.osc.Node;
import org.osmtools.osc.OsmChange;
import org.osmtools.osc.Relation;
import org.osmtools.osc.Way;
import org.springframework.transaction.annotation.Transactional;
@SuppressWarnings("unused")
public abstract class AbstractOsmChangeService implements OsmChangeService {
@Override
@Transactional
public void processOsmChange(OsmChange osmChange) {
prepareProcess(osmChange);
processCreates(osmChange);
processModifications(osmChange);
processDeletes(osmChange);
finishProcess(osmChange);
}
protected void prepareProcess(OsmChange osmChange) {
}
protected void finishProcess(OsmChange osmChange) {
}
private void processCreates(OsmChange osmChange) {
for (Create create : osmChange.getCreate()) {
for (Relation relation : create.getRelation()) {
createRelation(relation);
}
for (Node node : create.getNode()) {
createNode(node);
}
for (Way way : create.getWay()) {
createWay(way);
}
}
}
private void processModifications(OsmChange osmChange) {
for (Modify modify : osmChange.getModify()) {
for (Relation relation : modify.getRelation()) {
modifyRelation(relation);
}
for (Node node : modify.getNode()) {
modifyNode(node);
}
for (Way way : modify.getWay()) {
modifyWay(way);
}
}
}
private void processDeletes(OsmChange osmChange) {
for (Delete delete : osmChange.getDelete()) {
for (Relation relation : delete.getRelation()) {
deleteRelation(relation);
}
for (Node node : delete.getNode()) {
deleteNode(node);
}
for (Way way : delete.getWay()) {
deleteWay(way);
}
}
}
protected void createRelation(Relation relation) {
};
protected void modifyRelation(Relation relation) {
};
protected void deleteRelation(Relation relation) {
};
protected void createNode(Node node) {
};
protected void modifyNode(Node node) {
};
protected void deleteNode(Node node) {
};
protected void createWay(Way way) {
};
protected void modifyWay(Way way) {
};
protected void deleteWay(Way way) {
};
}