51 myNet->getGNEApplicationWindow()->getFileBucketHandler()->updateOptions();
65 myNet->getUndoList()->begin(dataSet,
TL(
"add data set"));
67 myNet->getUndoList()->end();
70 myNet->getAttributeCarriers()->insertDataSet(dataSet);
71 dataSet->
incRef(
"buildDataSet");
80 const std::string& dataSetID,
const double begin,
const double end) {
82 GNEDataSet* dataSet =
myNet->getAttributeCarriers()->retrieveDataSet(dataSetID,
false);
84 if (dataSet ==
nullptr) {
89 myNet->getUndoList()->begin(dataInterval,
TL(
"add data set and data interval"));
92 myNet->getUndoList()->end();
95 myNet->getAttributeCarriers()->insertDataSet(dataSet);
96 dataSet->
incRef(
"buildDataInterval");
99 dataInterval->
incRef(
"buildDataInterval");
105 myNet->getUndoList()->begin(dataInterval,
TL(
"add data interval"));
107 myNet->getUndoList()->end();
111 dataInterval->
incRef(
"buildDataInterval");
132 GNEEdge* edge =
myNet->getAttributeCarriers()->retrieveEdge(edgeID,
false);
133 if (edge ==
nullptr) {
136 return writeError(
TLF(
"There is already a edgeRel defined in edge '%'.", edge));
141 myNet->getUndoList()->begin(edgeData,
TL(
"add edge rel"));
143 myNet->getUndoList()->end();
147 edgeData->
incRef(
"buildEdgeData");
165 if (dataSet !=
nullptr) {
170 if (dataInterval !=
nullptr) {
172 GNEEdge*
const fromEdge =
myNet->getAttributeCarriers()->retrieveEdge(fromEdgeID,
false);
173 GNEEdge*
const toEdge =
myNet->getAttributeCarriers()->retrieveEdge(toEdgeID,
false);
174 if (fromEdge ==
nullptr) {
176 }
else if (toEdge ==
nullptr) {
179 return writeError(
TLF(
"There is already a edgeRel defined between '%' and '%'.", fromEdgeID, toEdgeID));
183 myNet->getUndoList()->begin(edgeData,
TL(
"add edge rel"));
185 myNet->getUndoList()->end();
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) {
228 myNet->getUndoList()->begin(edgeData,
TL(
"add TAZ rel"));
230 myNet->getUndoList()->end();
234 edgeData->
incRef(
"buildTAZRelationData");
240 myNet->getUndoList()->begin(edgeData,
TL(
"add TAZ rel"));
242 myNet->getUndoList()->end();
247 edgeData->
incRef(
"buildTAZRelationData");
263 auto dataSet =
myNet->getAttributeCarriers()->retrieveDataSet(
id,
false);
268 myNet->deleteDataSet(dataSet,
myNet->getUndoList());
278 myNet->deleteDataSet(dataSet,
myNet->getUndoList());
@ 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
DataHandler(FileBucket *fileBucket)
Constructor.
~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 incRef(const std::string &debugMsg="")
Increase reference.
An Element which don't belong to GNENet but has influence in the simulation.
std::map< std::string, std::string > Map
parameters map