35 #ifndef __GoDBCollectionOfTraces_h
36 #define __GoDBCollectionOfTraces_h
38 #include "MegaVTK2Configure.h"
40 #include "vtkMySQLDatabase.h"
61 std::string CollectionName, std::string Traces,
62 std::string iCollectionOfName,
unsigned int iImgSessionID);
74 void SetCollectionInfo(std::string iCollectionName,
75 std::string iTracesName,
76 std::string iCollectionOfName);
81 void SetImgSessionID(
unsigned int iImgSessionID);
89 void DeleteTraceInDB(
int TraceToDelete, vtkMySQLDatabase *DatabaseConnector);
98 void DeleteTracesInDB(std::list< unsigned int > TracesToDelete,
99 vtkMySQLDatabase *DatabaseConnector);
110 void UpdateCollectionIDOfSelectedTraces(
111 std::list< unsigned int > iListSelectedTraces,
unsigned int iCollectionID,
112 vtkMySQLDatabase *iDatabaseConnector);
119 std::string GetCollectionOf();
130 void RecalculateDBBoundingBox(
131 vtkMySQLDatabase *iDatabaseConnector,
int iCollectionID);
139 void RecalculateDBBoundingBox(
140 vtkMySQLDatabase *iDatabaseConnector, std::list< unsigned int > iListTracesIDs);
147 std::list< NameWithColorData > GetAllTracesIDsWithColor(
148 vtkMySQLDatabase *iDatabaseConnector);
156 std::list< NameWithColorData > GetTracesIDsWithColorForATimePoint(
157 vtkMySQLDatabase *iDatabaseConnector,
unsigned int iTimePoint);
168 template<
typename T >
171 T iNewCollection,
int iTimePoint = -1)
173 iNewCollection.SetField(
"ImagingSessionID", this->m_ImgSessionID);
175 int CoordIDMax = GetCoordIDMaxForBoundingBoxWithNoTraces(iDatabaseConnector);
176 int CoordIDMin = GetCoordIDMinForBoundingBoxWithNoTraces(iDatabaseConnector);
178 if ( iTimePoint != -1 )
180 this->SetTheTimePointCoordinatesForMesh(
181 iTimePoint, CoordIDMax, CoordIDMin, iDatabaseConnector);
183 std::string CollectionID = iNewCollection.GetMapValue(this->m_CollectionIDName);
184 if ( CollectionID !=
"0" )
186 if (CollectionID ==
"noValue")
188 return this->CreateNewTraceInDB< T >( iNewCollection, iDatabaseConnector,
189 CoordIDMin, CoordIDMax, iColor);
193 return this->CreateNewTraceInDB< T >( iNewCollection, iDatabaseConnector,
194 CoordIDMin, CoordIDMax, iColor,
195 ss_atoi< unsigned int >(CollectionID) );
200 return this->CreateNewTraceInDB< T >(iNewCollection, iDatabaseConnector,
201 CoordIDMin, CoordIDMax, iColor, 0);
215 template<
typename T >
219 iTrace.SetColor(iColor.second.red(), iColor.second.green(),
220 iColor.second.blue(), iColor.second.alpha(), iColor.first,
223 iTrace.SetCollectionID(iCollectionID);
224 return iTrace.SaveInDB(iDatabaseConnector);
230 template<
typename T >
233 unsigned int iCollectionID)
235 iTrace.SetField(
"CoordIDMin", ConvertToString< unsigned int >(iCoordIDMin) );
236 iTrace.SetField(
"CoordIDMax", ConvertToString< unsigned int >(iCoordIDMax) );
237 iTrace.SetColor(iColor.second.red(), iColor.second.green(),
238 iColor.second.blue(), iColor.second.alpha(), iColor.first,
241 iTrace.SetCollectionID(iCollectionID);
242 return iTrace.SaveInDB(iDatabaseConnector);
248 template<
typename T >
250 unsigned int iCoordIDMin,
unsigned int iCoordIDMax,
253 iTrace.SetField(
"CoordIDMin", ConvertToString< unsigned int >(iCoordIDMin) );
254 iTrace.SetField(
"CoordIDMax", ConvertToString< unsigned int >(iCoordIDMax) );
255 iTrace.SetColor(iColor.second.red(), iColor.second.green(),
256 iColor.second.blue(), iColor.second.alpha(), iColor.first,
258 return iTrace.SaveInDB(iDatabaseConnector);
268 template<
typename T >
274 tempTrace.SetValuesForSpecificID(iTraceID, iDatabaseConnector);
275 tempTrace.SetColor(iNewColor.second.red(), iNewColor.second.green(),
276 iNewColor.second.blue(), iNewColor.second.alpha(),
277 iNewColor.first, iDatabaseConnector);
278 tempTrace.SaveInDB(iDatabaseConnector);
287 std::list< unsigned int > GetListTracesIDsFromThisCollectionOf(
288 vtkMySQLDatabase *iDatabaseConnector, std::list< unsigned int > iListTraces);
298 std::list< unsigned int > GetListCollectionIDs(
299 vtkMySQLDatabase *iDatabaseConnector, std::list< unsigned int > iListTracesIDs,
300 bool ExcludeZero =
true,
bool Distinct =
true);
308 std::list< unsigned int > GetListTracesIDWithNoPoints(
309 std::list< unsigned int > iListTracesIDs, vtkMySQLDatabase *iDatabaseConnector);
317 std::list< unsigned int > GetLastCreatedTracesIDs(
318 vtkMySQLDatabase *iDatabaseConnector,
int iNumberOfTraces);
329 void UpdateValueForListTraces(
330 vtkMySQLDatabase *iDatabaseConnector,std::string iNameValue,
331 std::string iValue, std::list<unsigned int> iListTraceIDs);
341 std::list<double*> GetCoordinateCenterBoundingBox(vtkMySQLDatabase *iDatabaseConnector,
342 unsigned int iTraceID);
352 std::list<unsigned int> GetTraceIDsWithTimePointAndCollectionID(vtkMySQLDatabase *iDatabaseConnector,
353 unsigned int iCollectionID,
unsigned int iTimePoint);
362 std::list<unsigned int> GetTimePointWithSeveralTracesFromTheList(
363 vtkMySQLDatabase *iDatabaseConnector, std::list< unsigned int > iListTraceIDs);
373 int GetMaxTraceIDsForSpecificTimePoint(vtkMySQLDatabase *iDatabaseConnector,
374 std::list<unsigned int> iListTraceIDs,
unsigned int iTimePoint);
384 std::list<unsigned int> GetNonMaxTraceIDsForSpecificTimePoint(
385 vtkMySQLDatabase *iDatabaseConnector,std::list<unsigned int> iListTraceIDs,
386 unsigned int iTimePoint,
unsigned int iMaxTraceID);
395 std::list<unsigned int> GetListTimePointsFromTraceIDs(
396 vtkMySQLDatabase *iDatabaseConnector,std::list<unsigned int> iListTraceIDs);
406 std::list<unsigned int> GetTraceIDsBelongingToCollectionID(
407 vtkMySQLDatabase *iDatabaseConnector,std::list<unsigned int> iListTraceIDs,
408 unsigned int iCollectionID);
416 std::list<unsigned int> GetTraceIDsBelongingToCollectionID(
417 vtkMySQLDatabase *iDatabaseConnector,std::list<unsigned int> iListCollectionIDs);
419 std::list<unsigned int> GetTraceIDsBelongingToListTimePoints(
420 vtkMySQLDatabase *iDatabaseConnector,std::list<unsigned int> iListTPs);
428 std::list<unsigned int> GetTimePointsForTraceIDs(
429 vtkMySQLDatabase *iDatabaseConnector,std::list<unsigned int> iListTraceIDs);
439 std::list<unsigned int> GetTraceIDsWithTimePointInf(
440 vtkMySQLDatabase *iDatabaseConnector,std::list<unsigned int> iListTraceIDs,
441 unsigned int iTimePoint);
451 unsigned int GetBoundedBoxTimePoint(
452 vtkMySQLDatabase *iDatabaseConnector,
unsigned int iTraceID,
bool MinTimePoint =
true);
464 vtkMySQLDatabase* iDatabaseConnector,
unsigned int iImgSessionID,
465 std::list<unsigned int> iListTraces)
467 std::list<T> oListTracesResults;
468 std::vector<std::string> TraceAttributes = this->GetAttributesForTraces();
469 FieldWithValue CoordinateCondition = {
"CoordIDMin",
"CoordID",
"="};
472 GetInfoFromDBAndModifyListStructure<T>(
473 oListTracesResults, iDatabaseConnector,
474 TraceAttributes, this->m_TracesName,
"coordinate",
"color",
475 CoordinateCondition, ColorCondition,
"ImagingSessionID",
476 iImgSessionID, this->m_TracesIDName, iListTraces);
477 return oListTracesResults;
483 int GetTraceIDWithLowestTimePoint(vtkMySQLDatabase *iDatabaseConnector,
484 std::list<unsigned int> iListTraceIDs);
486 std::list<unsigned int> GetTrackFamilyDataFromDB(
487 vtkMySQLDatabase *iDatabaseConnector);
489 std::list<unsigned int> GetTrackFamiliesForLineages(
490 vtkMySQLDatabase *iDatabaseConnector, std::list<unsigned int> iLineagesID);
496 std::list<unsigned int> GetTrackFamilyID(vtkMySQLDatabase *iDatabaseConnector,
497 std::list<unsigned int> iListTrackIDs);
499 std::string GetPoints(vtkMySQLDatabase *iDatabaseConnector,
500 std::string iTraceName,
501 unsigned int iTraceID);
503 std::vector<unsigned int> GetTrackFamily(vtkMySQLDatabase *iDatabaseConnector,
504 unsigned int iTrackID);
506 bool isMother(vtkMySQLDatabase *iDatabaseConnector,
unsigned int iTrackID);
520 int CreateNewCollection();
525 int CreateNewCollection(vtkMySQLDatabase *DatabaseConnector,
GoDBTraceRow & myNewObject);
528 void UpdateBoundingBoxInDB(
int iCoordIDMin,
int iCoordIDMax,
529 int iTraceID, vtkMySQLDatabase *iDatabaseConnector);
533 void UpdateCollectionIDOfSelectedTrace(
int iSelectedTraceID,
int inewCollectionID,
534 vtkMySQLDatabase *DatabaseConnector);
550 void SetTheTimePointCoordinatesForMesh(
unsigned int iTimePoint,
553 vtkMySQLDatabase *iDatabaseConnector);
560 int GetCoordIDMaxForBoundingBoxWithNoTraces(
561 vtkMySQLDatabase *iDatabaseConnector);
568 int GetCoordIDMinForBoundingBoxWithNoTraces(
569 vtkMySQLDatabase *iDatabaseConnector);
574 int GetCoordMinID(vtkMySQLDatabase *DatabaseConnector,
int iTraceID);
579 int GetCoordMaxID(vtkMySQLDatabase *DatabaseConnector,
int iTraceID);
584 vtkMySQLDatabase *DatabaseConnector, std::list< unsigned int > iListCollectionOfTracesID);
589 vtkMySQLDatabase *DatabaseConnector, std::list< unsigned int > iListCollectionOfTracesID);
598 void GetFieldsNeededForQueryForColorData(
599 std::vector< std::string > & ioSelectedFields,
600 std::vector< std::string > & ioJoinTablesOnTraceTable);
608 std::list< NameWithColorData >
609 GetListNameWithColorDataFromResultsQuery(
610 std::vector< std::vector< std::string > > iResultsQuery);
612 std::vector<std::string> GetAttributesForTraces();
GoDBTableWidgetContainer::TWContainerType TWContainerType
void ChangeColorForTrace(unsigned int iTraceID, NameWithColorData iNewColor, vtkMySQLDatabase *iDatabaseConnector)
update the color of the specified trace with iNewColor in the database
abstract class to be inherited by Contour,Mesh,Track and GoDBLineageRow
int CreateCollectionWithNoTracesNoPoints(vtkMySQLDatabase *iDatabaseConnector, NameWithColorData iColor, T iNewCollection, int iTimePoint=-1)
save the collection in the database after getting an empty bounding box and return the corresponding ...
manages a map with keys matching fields of the gofiguredatabase Coordinate table and values of the ma...
std::string m_CollectionName
unsigned int m_ImgSessionID
std::string m_CollectionOfName
std::string m_CollectionIDName
std::string m_TracesIDName
unsigned int CreateNewTraceInDB(T iTrace, vtkMySQLDatabase *iDatabaseConnector, unsigned int iCoordIDMin, unsigned int iCoordIDMax, NameWithColorData iColor, unsigned int iCollectionID)
std::pair< std::string, QColor > NameWithColorData
std::list< T > GetListStructureFromDB(vtkMySQLDatabase *iDatabaseConnector, unsigned int iImgSessionID, std::list< unsigned int > iListTraces)
get a list of structures filled with data from the database
unsigned int CreateNewTraceInDB(T iTrace, vtkMySQLDatabase *iDatabaseConnector, unsigned int iCoordIDMin, unsigned int iCoordIDMax, NameWithColorData iColor)
unsigned int CreateNewTraceInDB(T iTrace, vtkMySQLDatabase *iDatabaseConnector, NameWithColorData iColor, unsigned int iCollectionID)
set the bounding box, the color and the collectionID of the trace,save it in the database and return ...
this class handles the interaction between the database and the children of QGoDBTraceManager ...
std::string m_CollectionOfIDName