/* * Copyright James Leigh (c) 2007. * * Licensed under the Aduna BSD-style license. */ package net.enilink.komma.dm.internal.change; import net.enilink.komma.dm.IDataManager; import net.enilink.komma.dm.change.IDataChange; import net.enilink.komma.dm.change.INamespaceChange; import net.enilink.komma.core.URI; /** * Saves a single change to the namespace. * */ public class NamespaceChange implements INamespaceChange, IDataChange { private URI newNS; private URI oldNS; private String prefix; public NamespaceChange(String prefix, URI oldNS, URI newNS) { this.prefix = prefix; this.oldNS = oldNS; this.newNS = newNS; } public URI getNewNS() { return newNS; } public URI getOldNS() { return oldNS; } public String getPrefix() { return prefix; } public void redo(IDataManager dm) { if (newNS == null) { dm.removeNamespace(prefix); } else { dm.setNamespace(prefix, newNS); } } @Override public String toString() { return new StringBuilder().append("namespace ") .append(newNS == null ? "deleted" : "added") .append(" [prefix=").append(prefix).append(", oldNS=") .append(oldNS).append(", newNS=").append(newNS).append("]") .toString(); } public void undo(IDataManager dm) { if (oldNS == null) { dm.removeNamespace(prefix); } else { dm.setNamespace(prefix, oldNS); } } }