blob: 045192dd9fe4cc2baff0c568eff515ba8d0aaf0e [file] [log] [blame]
/*
* Copyright 2016-present Open Networking Foundation
*
* 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 org.onosproject.yms.app.ytb;
import org.onosproject.yangutils.datamodel.YangAugment;
import java.util.Iterator;
import java.util.Map;
/**
* Represents YTB node info for all the nodes that are added to the YDT
* builder tree.Contains the information which can be attached and retrieved
* back from YDT while walking.
*/
public class YtbNodeInfo {
/**
* Object of the corresponding YANG construct. This object is bound to
* each and every YDT node. So, whenever walk of parent and sibling
* happens, object can be retrieved from its YDT node.
*/
private Object yangObject;
/**
* The list iterator since first content of the multi instance node is
* faced. With this iterator the node can be walked multiple times till
* it becomes empty.
*/
private Iterator<Object> listIterator;
/**
* The current YTB node's, list of augments are iterated through this
* iterator. Every time an augment is built completely, this iterator
* gives the next augment node until it becomes empty.
*/
private Iterator<YangAugment> augmentNodeItr;
/**
* The map with case object as value and choice node name as key is added
* for the current YTB info. Every time a case schema node comes, it takes
* this map and checks if it is present.
*/
private Map<String, Object> choiceCaseMap;
/**
* When the case finds its object in map, it assigns it to case object of
* the YTB info, so when its child wants to take the parent object, they
* can take from the YTB info's case object.
*/
private Object caseObject;
/**
* When the augment object is present, it assigns it to augment object of
* the YTB info, so when its child wants to take the parent object, they
* can take from the YTB info's augment object.
*/
private Object augmentObject;
/**
* Constructs a default YTB node info.
*/
public YtbNodeInfo() {
}
/**
* Returns the object of the YANG schema node.
*
* @return YANG node object
*/
public Object getYangObject() {
return yangObject;
}
/**
* Sets the object of the YANG schema node.
*
* @param yangObject YANG node object
*/
public void setYangObject(Object yangObject) {
this.yangObject = yangObject;
}
/**
* Returns the current list iterator of the YANG schema node.
*
* @return current list iterator for the schema node
*/
public Iterator<Object> getListIterator() {
return listIterator;
}
/**
* Sets the current list iterator of the YANG schema node.
*
* @param listIterator current list iterator for the schema node
*/
public void setListIterator(Iterator<Object> listIterator) {
this.listIterator = listIterator;
}
/**
* Returns the map of choice schema name and case object.
*
* @return choice name and case object map
*/
public Map<String, Object> getChoiceCaseMap() {
return choiceCaseMap;
}
/**
* Sets the map of choice schema name and case object.
*
* @param choiceCaseMap choice name and case object map
*/
public void setChoiceCaseMap(Map<String, Object> choiceCaseMap) {
this.choiceCaseMap = choiceCaseMap;
}
/**
* Returns the case object.
*
* @return case object
*/
public Object getCaseObject() {
return caseObject;
}
/**
* Sets the case node object.
*
* @param caseObject case node object
*/
public void setCaseObject(Object caseObject) {
this.caseObject = caseObject;
}
/**
* Returns the augment node object.
*
* @return augment node object
*/
public Object getAugmentObject() {
return augmentObject;
}
/**
* Sets the augment node object.
*
* @param augmentObject augment node object
*/
public void setAugmentObject(Object augmentObject) {
this.augmentObject = augmentObject;
}
/**
* Returns the current list iterator of the YANG augment node.
*
* @return augment node iterator
*/
public Iterator<YangAugment> getAugmentIterator() {
return augmentNodeItr;
}
/**
* Sets the current list iterator of the YANG augment node.
*
* @param augmentNodeItr augment node iterator
*/
public void setAugmentIterator(Iterator<YangAugment> augmentNodeItr) {
this.augmentNodeItr = augmentNodeItr;
}
}