45 myAllowUndoRedo(allowUndoRedo) {
71 dataSet->
incRef(
"buildDataSet");
80 const std::string& dataSetID,
const double begin,
const double end) {
84 if (dataSet ==
nullptr) {
96 dataSet->
incRef(
"buildDataInterval");
99 dataInterval->
incRef(
"buildDataInterval");
111 dataInterval->
incRef(
"buildDataInterval");
133 if (edge ==
nullptr) {
136 return writeError(
TLF(
"There is already a edgeRel defined in edge '%'.", edge));
147 edgeData->
incRef(
"buildEdgeData");
165 if (dataSet !=
nullptr) {
170 if (dataInterval !=
nullptr) {
174 if (fromEdge ==
nullptr) {
176 }
else if (toEdge ==
nullptr) {
179 return writeError(
TLF(
"There is already a edgeRel defined between '%' and '%'.", fromEdgeID, toEdgeID));
190 edgeData->
incRef(
"buildEdgeRelationData");
208 if (dataSet !=
nullptr) {
213 if (dataInterval !=
nullptr) {
217 if (fromTAZ ==
nullptr) {
219 }
else if (toTAZ ==
nullptr) {
221 }
else if ((fromTAZ != toTAZ) && dataInterval->
TAZRelExists(fromTAZ, toTAZ)) {
222 return writeError(
TLF(
"There is already a TAZ rel defined between '%' and '%'.", fromTAZID, toTAZID));
223 }
else if ((fromTAZ == toTAZ) && dataInterval->
TAZRelExists(fromTAZ)) {
224 return writeError(
TLF(
"There is already a TAZ rel defined in '%'.", toTAZID));
225 }
else if (fromTAZ == toTAZ) {
234 edgeData->
incRef(
"buildTAZRelationData");
247 edgeData->
incRef(
"buildTAZRelationData");
@ SUMO_TAG_EDGEREL
a relation between two edges
@ SUMO_TAG_TAZ
a traffic assignment zone
@ SUMO_TAG_TAZREL
a relation between two TAZs
@ SUMO_TAG_EDGE
begin/end of the description of an edge
@ SUMO_ATTR_BEGIN
weights: time range begin
@ SUMO_ATTR_END
weights: time range end
bool writeError(const std::string &error)
write error and enable error creating element
bool writeWarningDuplicated(const SumoXMLTag tag, const std::string &id, const SumoXMLTag checkedTag)
write warning duplicated element
bool writeErrorInvalidParent(const SumoXMLTag tag, const std::string &id, const std::vector< SumoXMLTag > parentTags, const std::string &parentID)
write error "invalid parent element" giving ids of current and parent element
bool myOverwriteElements
overwrite elements
bool checkValidAdditionalID(const SumoXMLTag tag, const std::string &value)
check if the given additional ID is valid
FileBucket * myFileBucket
fileBucket
bool myRemainElements
remain elements
SumoBaseObject * getParentSumoBaseObject() const
get pointer to mySumoBaseObjectParent SumoBaseObject (if is null, then is the root)
double getDoubleAttribute(const SumoXMLAttr attr) const
get double attribute
const std::string & getStringAttribute(const SumoXMLAttr attr) const
get string attribute
The XML-Handler for network loading.
void updateOptions()
update options
GNEApplicationWindowHelper::FileBucketHandler * getFileBucketHandler() const
get file bucket handler
~GNEDataHandler()
Destructor.
bool buildDataInterval(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const std::string &dataSetID, const double begin, const double end)
Builds DataInterval.
bool buildTAZRelationData(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const std::string &fromTAZID, const std::string &toTAZID, const Parameterised::Map ¶meters)
Builds TAZRelationData.
bool buildDataSet(const std::string &id)
Builds DataSet (exclusive of netedit)
const bool myAllowUndoRedo
allow undo/redo
bool buildEdgeRelationData(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const std::string &fromEdgeID, const std::string &toEdgeID, const Parameterised::Map ¶meters)
Builds edgeRelationData.
bool buildEdgeData(const CommonXMLStructure::SumoBaseObject *sumoBaseObject, const std::string &edgeID, const Parameterised::Map ¶meters)
Builds edgeData.
bool checkDuplicatedDataSet(const std::string &id)
check if given ID correspond to a duplicated dataSet
GNENet * myNet
pointer to GNENet
GNEDataHandler()=delete
invalidate default constructor
bool edgeRelExists(const GNEEdge *fromEdge, const GNEEdge *toEdge) const
check if there is already a edgeRel defined between two edges
bool TAZRelExists(const GNEAdditional *TAZ) const
check if there is already a TAZRel defined in one TAZ
bool edgeRelSingleExists(const GNEEdge *edge) const
check if there is already a edgeRel single defined in the given edge
void addGenericDataChild(GNEGenericData *genericData)
add generic data child
GNEDataInterval * retrieveInterval(const double begin, const double end) const
return interval
void addDataIntervalChild(GNEDataInterval *dataInterval)
add data interval child
Result getResult() const
get result to indicate if this dialog was closed accepting or rejecting changes
An Element which don't belong to GNENet but has influence in the simulation.
An Element which don't belong to GNENet but has influence in the simulation.
void addChildElement(ChildType *element)
add child without updating parent (ONLY used if we're creating elements without undo-redo)
void insertDataSet(GNEDataSet *dataSet)
Insert a data set in container.
GNEAdditional * retrieveAdditional(SumoXMLTag type, const std::string &id, bool hardFail=true) const
Returns the named additional.
GNEDataSet * retrieveDataSet(const std::string &id, bool hardFail=true) const
Returns the named data set.
GNEEdge * retrieveEdge(const std::string &id, bool hardFail=true) const
get edge by id
GNENetHelper::AttributeCarriers * getAttributeCarriers() const
get all attribute carriers used in this net
GNEApplicationWindow * getGNEApplicationWindow() const
get tag properties database
void deleteDataSet(GNEDataSet *dataSet, GNEUndoList *undoList)
remove data set
GNEUndoList * getUndoList() const
get undo list(used for simplify code)
void incRef(const std::string &debugMsg="")
Increase reference.
An Element which don't belong to GNENet but has influence in the simulation.
void end()
End undo command sub-group. If the sub-group is still empty, it will be deleted; otherwise,...
void begin(GUIIcon icon, const std::string &description)
Begin undo command sub-group with current supermode. This begins a new group of commands that are tre...
void add(GNEChange *command, bool doit=false, bool merge=true)
Add new command, executing it if desired. The new command will be merged with the previous command if...
std::map< std::string, std::string > Map
parameters map