/******************************************************************************* * Copyright (c) 2014, 2015 Cisco Systems, Inc. and others. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html * *******************************************************************************/ package com.cisco.yangide.ext.model.editor.sync; import org.eclipse.text.edits.InsertEdit; import org.eclipse.text.edits.ReplaceEdit; import com.cisco.yangide.core.dom.ASTNode; import com.cisco.yangide.core.dom.Module; import com.cisco.yangide.core.dom.SimpleNode; /** * @author Konstantin Zaitsev * @date Aug 28, 2014 */ public class ModulePropertyUpdater extends SourceNodePropertyUpdater<Module> { public ModulePropertyUpdater(DiagramModelAdapter adapter) { super(adapter); } @Override public void updateProperty(Module node, String name, Object newValue, int startPosition) { Module module = node; SimpleNode<String> prop = null; boolean handle = false; switch (name) { case "namespace": prop = module.getNamespaceNode(); handle = true; break; case "prefix": prop = module.getPrefix(); handle = true; break; case "yang-version": prop = module.getYangVersion(); handle = true; break; } if (handle) { if (prop == null) { // insert new property int pos = node.getBodyStartPosition() + 1; adapter.performEdit( new InsertEdit(pos, System.lineSeparator() + formatTag(node, name, (String) newValue))); } else { // update property adapter.performEdit(new ReplaceEdit(prop.getStartPosition(), prop.getLength() + 1, formatTag(node, name, (String) newValue).trim())); } } ASTNode beforeRevisionNode = getAboveChildNode(module, module.getRevisionNode()); int beforeRevision = beforeRevisionNode != null ? beforeRevisionNode.getEndPosition() + 1 : node.getBodyStartPosition() + 1; super.updateDefaultProperty(node, name, newValue, beforeRevision); } }