38 #include "vtkMySQLDatabase.h"
44 #include <QStringList>
58 std::string iCollectionName, std::string iTracesName,
59 std::string iCollectionOfName,
unsigned int iImgSessionID)
76 std::string iTracesName,
77 std::string iCollectionOfName)
103 vtkMySQLDatabase *DatabaseConnector)
105 std::list< unsigned int >::iterator iter = TracesToDelete.begin();
106 while ( iter != TracesToDelete.end() )
108 unsigned int ID = *iter;
115 ConvertToString< unsigned int >(ID));
119 ConvertToString< unsigned int >(ID) );
129 vtkMySQLDatabase *DatabaseConnector)
132 ConvertToString< int >(TraceToDelete) );
140 std::list< unsigned int > iListSelectedTraces,
unsigned int inewCollectionID,
141 vtkMySQLDatabase *DatabaseConnector)
143 std::string newCollectionIDstring = ConvertToString< unsigned int >(inewCollectionID);
145 std::list< unsigned int >::iterator iter = iListSelectedTraces.begin();
146 while ( iter != iListSelectedTraces.end() )
148 unsigned int TraceID = *iter;
151 ConvertToString< unsigned int >(TraceID) );
161 int iSelectedTraceID,
int inewCollectionID,
162 vtkMySQLDatabase *DatabaseConnector)
166 ConvertToString< int >(iSelectedTraceID) );
173 vtkMySQLDatabase *iDatabaseConnector, std::string iNameValue,
174 std::string iValue, std::list< unsigned int > iListTraceIDs)
176 std::vector< unsigned int > VectIDs;
177 std::copy( iListTraceIDs.begin(), iListTraceIDs.end(), std::back_inserter(VectIDs) );
187 vtkMySQLDatabase *iDatabaseConnector,
int iCollectionID)
190 int CoordIDMax = this->
GetCoordMaxID(iDatabaseConnector, iCollectionID);
191 int CoordIDMin = this->
GetCoordMinID(iDatabaseConnector, iCollectionID);
194 iCollectionID, iDatabaseConnector);
201 vtkMySQLDatabase *iDatabaseConnector, std::list< unsigned int > iListTracesIDs)
203 std::list< unsigned int >::iterator iter = iListTracesIDs.begin();
204 while ( iter != iListTracesIDs.end() )
214 std::list< GoDBCollectionOfTraces::NameWithColorData >
216 vtkMySQLDatabase *iDatabaseConnector)
220 std::vector< std::string > SelectFields;
221 std::vector< std::string > JoinTablesOnTraceTable;
223 std::vector< std::vector< std::string > > ResultsQuery;
228 ConvertToString< unsigned int >(
230 JoinTablesOnTraceTable,
true);
238 std::list< GoDBCollectionOfTraces::NameWithColorData >
240 vtkMySQLDatabase *iDatabaseConnector,
unsigned int iTimePoint)
242 std::list< NameWithColorData > oListTraceIDs;
245 std::vector< std::string > SelectFields;
246 std::vector< std::string > JoinTablesOnTraceTable;
249 std::string JoinTable =
"coordinate";
250 JoinTablesOnTraceTable.push_back(JoinTable);
253 OnCondition +=
"CoordIDMin = coordinate.coordid";
254 JoinTablesOnTraceTable.push_back(OnCondition);
255 std::vector< std::string > WhereAndConditions;
257 OnCondition +=
".ImagingsessionID";
258 WhereAndConditions.push_back(OnCondition);
259 WhereAndConditions.push_back( ConvertToString< unsigned int >(this->
m_ImgSessionID) );
260 WhereAndConditions.push_back(
"coordinate.TCoord");
261 WhereAndConditions.push_back( ConvertToString< int >(iTimePoint) );
267 JoinTablesOnTraceTable,
true);
276 std::vector< std::string > & ioSelectedFields,
277 std::vector< std::string > & ioJoinTablesOnTraceTable)
280 std::string Red =
"color.Red";
281 ioSelectedFields.push_back(Red);
282 std::string Green =
"color.Green";
283 ioSelectedFields.push_back(Green);
284 std::string Blue =
"color.Blue";
285 ioSelectedFields.push_back(Blue);
286 std::string Alpha =
"color.Alpha";
287 ioSelectedFields.push_back(Alpha);
289 std::string JoinTable =
"color";
290 ioJoinTablesOnTraceTable.push_back(JoinTable);
292 OnCondition +=
".ColorID = color.ColorID";
293 ioJoinTablesOnTraceTable.push_back(OnCondition);
299 std::list< GoDBCollectionOfTraces::NameWithColorData >
301 std::vector< std::vector< std::string > > iResultsQuery)
303 std::list< NameWithColorData > oListNameWithColorData;
305 std::vector< std::vector< std::string > >::iterator iter = iResultsQuery.begin();
306 while ( iter != iResultsQuery.end() )
308 std::vector< std::string > ResultsOneRow = *iter;
310 int intRed = atoi( ResultsOneRow[i + 1].c_str() );
311 int intGreen = atoi( ResultsOneRow[i + 2].c_str() );
312 int intBlue = atoi( ResultsOneRow[i + 3].c_str() );
313 int intAlpha = atoi( ResultsOneRow[i + 4].c_str() );
315 QColor Color(intRed, intGreen, intBlue, intAlpha);
317 temp.first = ResultsOneRow[i];
319 oListNameWithColorData.push_back(temp);
322 return oListNameWithColorData;
351 std::list< unsigned int > ListTracesIDs;
352 ListTracesIDs.push_back(iTraceID);
353 std::list< unsigned int > ListCollectionOfTraces =
356 if ( ListCollectionOfTraces.empty() )
366 iDatabaseConnector, ListCollectionOfTraces);
367 return TracesCoordMin.
SaveInDB(iDatabaseConnector);
379 std::list< unsigned int > ListTracesIDs;
380 ListTracesIDs.push_back(iTraceID);
381 std::list< unsigned int > ListCollectionOfTraces =
384 if ( ListCollectionOfTraces.empty() )
394 iDatabaseConnector, ListCollectionOfTraces);
395 return TracesCoordMax.
SaveInDB(iDatabaseConnector);
404 vtkMySQLDatabase *DatabaseConnector,
405 std::list< unsigned int > iListCollectionOfTracesID)
411 std::list< unsigned int > ListCollectionOfTracesCoordIDMin =
414 iListCollectionOfTracesID);
418 for (
unsigned int i = 0; i < ColumnNames.size(); i++ )
421 if ( ColumnNames[i] !=
"CoordID" )
424 ListCollectionOfTracesCoordIDMin);
426 DatabaseConnector, ColumnNames[i],
"coordinate",
"CoordID",
427 VectorCollectionOfTracesCoordIDMin) );
437 vtkMySQLDatabase *DatabaseConnector,
438 std::list< unsigned int > iListCollectionOfTracesID)
444 std::list< unsigned int > ListCollectionOfTracesCoordIDMax =
448 iListCollectionOfTracesID);
452 for (
unsigned int i = 0; i < ColumnNames.size(); i++ )
455 if ( ColumnNames[i] !=
"CoordID" )
458 ListCollectionOfTracesCoordIDMax);
460 DatabaseConnector, ColumnNames[i],
"coordinate",
"CoordID",
461 VectorCollectionOfTracesCoordIDMax) );
492 vtkMySQLDatabase *iDatabaseConnector)
497 return FindOneID( iDatabaseConnector,
"imagingsession",
"CoordIDMax",
498 "ImagingSessionID", ConvertToString< int >(this->
m_ImgSessionID) );
505 vtkMySQLDatabase *iDatabaseConnector)
510 return FindOneID( iDatabaseConnector,
"imagingsession",
"CoordIDMin",
511 "ImagingSessionID", ConvertToString< int >(this->
m_ImgSessionID) );
518 unsigned int iTimePoint,
521 vtkMySQLDatabase *iDatabaseConnector)
526 Coordinate.
SetField<
int >(
"TCoord", iTimePoint);
527 Coordinate.
SetField(
"CoordID",
"0");
528 ioCoordIDMax = Coordinate.
SaveInDB(iDatabaseConnector);
531 Coordinate.
SetField<
int >(
"TCoord", iTimePoint);
532 Coordinate.
SetField(
"CoordID",
"0");
533 ioCoordIDMin = Coordinate.
SaveInDB(iDatabaseConnector);
540 vtkMySQLDatabase *DatabaseConnector,
GoDBTraceRow & iNewCollection)
547 return AddOnlyOneNewObjectInTable< GoDBMeshRow >(
553 return AddOnlyOneNewObjectInTable< GoDBTrackRow >(
559 return AddOnlyOneNewObjectInTable< GoDBLineageRow >(
681 vtkMySQLDatabase *iDatabaseConnector)
686 ConvertToString< int >(iTraceID) );
691 ConvertToString< int >(iTraceID) );
698 vtkMySQLDatabase *iDatabaseConnector, std::list< unsigned int > iListTraces)
700 std::list< unsigned int > ListTracesFromCollectionOf = std::list< unsigned int >();
707 return ListTracesFromCollectionOf;
714 vtkMySQLDatabase *iDatabaseConnector, std::list< unsigned int > iListTracesIDs,
715 bool ExcludeZero,
bool Distinct)
717 std::list< unsigned int > ListCollectionIDs = std::list< unsigned int >();
724 return ListCollectionIDs;
732 std::list< unsigned int > iListTracesIDs, vtkMySQLDatabase *iDatabaseConnector)
734 std::vector< std::string > VectorTracesIDs =
737 if ( !VectorTracesIDs.empty() )
741 VectorTracesIDs,
"points");
745 return std::list< unsigned int >();
753 vtkMySQLDatabase *iDatabaseConnector,
int iNumberOfTraces)
757 "imagingsessionid", ConvertToString< unsigned int >(this->
m_ImgSessionID),
758 false, ConvertToString< int >(iNumberOfTraces) );
767 vtkMySQLDatabase *iDatabaseConnector,
unsigned int iTraceID)
771 ConvertToString< unsigned int >(iTraceID) );
778 vtkMySQLDatabase *iDatabaseConnector,
779 unsigned int iCollectionID,
780 unsigned int iTimePoint)
784 std::vector< FieldWithValue > Conditions(2);
786 iCollectionID),
"=" };
787 Conditions[0] = CollectionID;
788 FieldWithValue TimePoint = {
"TCoord", ConvertToString< unsigned int >(iTimePoint),
"=" };
789 Conditions[1] = TimePoint;
799 vtkMySQLDatabase *iDatabaseConnector, std::list< unsigned int > iListTraceIDs)
801 std::list< unsigned int > TimePoints = std::list< unsigned int >();
802 if ( !iListTraceIDs.empty() )
818 vtkMySQLDatabase *iDatabaseConnector, std::list< unsigned int > iListTraceIDs,
819 unsigned int iTimePoint)
821 int oMaxTraceID = -1;
823 if ( !iListTraceIDs.empty() )
827 FieldWithValue TCoord = {
"TCoord", ConvertToString< unsigned int >(iTimePoint),
"=" };
844 vtkMySQLDatabase *iDatabaseConnector, std::list< unsigned int > iListTraceIDs,
845 unsigned int iTimePoint,
unsigned int iMaxTraceID)
847 std::list< unsigned int >::iterator iter = std::find(iListTraceIDs.begin(),
848 iListTraceIDs.end(), iMaxTraceID);
849 iListTraceIDs.erase(iter);
850 std::list< unsigned int > oListTraceIDs = std::list< unsigned int >();
851 if ( !iListTraceIDs.empty() )
855 FieldWithValue TCoord = {
"TCoord", ConvertToString< unsigned int >(iTimePoint),
"=" };
865 return oListTraceIDs;
872 vtkMySQLDatabase *iDatabaseConnector, std::list< unsigned int > iListTraceIDs)
878 this->
m_TracesName,
"coordinate",
"TCoord", JoinCondition,
886 vtkMySQLDatabase *iDatabaseConnector, std::list< unsigned int > iListTraceIDs,
887 unsigned int iCollectionID)
899 vtkMySQLDatabase *iDatabaseConnector, std::list< unsigned int > iListCollectionIDs)
909 vtkMySQLDatabase *iDatabaseConnector,std::list<unsigned int> iListTPs)
914 {
"imagingsessionID", ConvertToString<unsigned int>(this->
m_ImgSessionID),
"="};
917 "coordinate", this->
m_TracesIDName, JoinCondition,
"TCoord", VectTimePoints,
925 vtkMySQLDatabase *iDatabaseConnector, std::list< unsigned int > iListTraceIDs)
931 this->
m_TracesName,
"coordinate",
"TCoord", JoinCondition,
939 std::list< unsigned int > iListTraceIDs,
940 unsigned int iTimePoint)
944 {
"TCoord", ConvertToString< unsigned int >(iTimePoint),
"<" };
986 vtkMySQLDatabase *iDatabaseConnector,
unsigned int iTraceID,
bool MinTimePoint)
988 std::string WhichTimePoint =
"CoordIDMin";
992 WhichTimePoint =
"CoordIDMax";
994 FieldWithValue JoinCondition = { WhichTimePoint,
"CoordID",
"=" };
995 std::vector< std::string > TraceID(1);
996 TraceID.at(0) = ConvertToString< unsigned int >(iTraceID);
998 iDatabaseConnector, this->
m_TracesName,
"coordinate",
"TCoord", JoinCondition,
1000 return results.front();
1008 std::vector< std::string > oTraceAttributes;
1016 oTraceAttributes.push_back(
"TrackIDRoot");
1018 oTraceAttributes.push_back(
"Red");
1019 oTraceAttributes.push_back(
"Green");
1020 oTraceAttributes.push_back(
"Blue");
1021 oTraceAttributes.push_back(
"Alpha");
1022 oTraceAttributes.push_back(
"Points");
1023 oTraceAttributes.push_back(
"TCoord");
1025 return oTraceAttributes;
1032 vtkMySQLDatabase *iDatabaseConnector,
1033 std::list<unsigned int> iListTraceIDs )
1036 std::vector< std::string > SelectedFields(2);
1037 SelectedFields.at(0) =
"track.trackid";
1038 SelectedFields.at(1) =
"coordinate.TCoord";
1040 std::vector<FieldWithValue> Conditions = std::vector<FieldWithValue>();
1041 std::list<unsigned int>::iterator iter = iListTraceIDs.begin();
1043 while(iter != iListTraceIDs.end() )
1045 unsigned int Value = *iter;
1047 Conditions.push_back(Condition);
1051 std::vector< std::string > ResultQuery
1053 iDatabaseConnector, this->
m_TracesName,
"coordinate", SelectedFields,
1054 JoinCondition, Conditions,
"OR",
"TCoord");
1055 if (ResultQuery.size()>2)
1057 if (ResultQuery.at(1) != ResultQuery.at(3))
1059 oTraceID = ss_atoi<int>(ResultQuery.at(0));
1068 vtkMySQLDatabase *iDatabaseConnector)
1070 std::vector<std::string> VectColumnsTrackFamily(3);
1071 VectColumnsTrackFamily.at(0) =
"TrackIDMother";
1072 VectColumnsTrackFamily.at(1) =
"TrackIDDaughter1";
1073 VectColumnsTrackFamily.at(2) =
"TrackIDDaughter2";
1074 const FieldWithValue JoinCondition = {
"TrackID",
"TrackIDMother",
"="};
1077 std::string(
"track" ),
1078 std::string(
"trackfamily" ),
1079 VectColumnsTrackFamily,
1081 std::string(
"ImagingsessionID" ),
1090 vtkMySQLDatabase *iDatabaseConnector, std::list<unsigned int> iLineagesID)
1092 FieldWithValue JoinCondition = {
"trackID",
"TrackIDMother",
"=" };
1097 "trackfamily.trackfamilyID", JoinCondition,
"track.lineageid", VectorLineages );
1103 vtkMySQLDatabase *iDatabaseConnector, std::list<unsigned int> iListTrackIDs)
1105 FieldWithValue JoinCondition = {
"trackID",
"trackIDMother",
"=" };
1108 this->
m_TracesName,
"trackfamily", JoinCondition,
"track.trackfamilyID",
1109 "trackfamily.trackfamilyID", this->
m_TracesIDName, VectTrackIDs,
true);
1117 GetPoints(vtkMySQLDatabase *iDatabaseConnector, std::string iTraceName,
1118 unsigned int iTraceID)
1121 std::string QueryString =
"SELECT Points ";
1124 QueryString +=
"FROM " + iTraceName;
1128 std::string traceID = iTraceName;
1129 std::transform(iTraceName.begin(), ++iTraceName.begin(),traceID.begin(), ::toupper);
1131 QueryString +=
" WHERE " + traceID +
" = ";
1133 std::stringstream s;
1135 QueryString += s.str();
1137 return ExecuteSelectQueryOneValue< std::string >( iDatabaseConnector,
1143 std::vector<unsigned int>
1148 std::string QueryString =
"SELECT * ";
1151 QueryString +=
"FROM trackfamily ";
1155 std::stringstream s;
1157 std::string trackID = s.str();
1159 QueryString +=
" WHERE (TrackIDDaughter1=" + trackID;
1160 QueryString +=
" OR TrackIDDaughter2=" + trackID +
")";
1162 return ExecuteSelectQuery< std::vector<unsigned int> >( iDatabaseConnector,
1170 isMother(vtkMySQLDatabase *iDatabaseConnector,
unsigned int iTrackID)
1173 std::string QueryString =
"SELECT TrackIDMother ";
1176 QueryString +=
"FROM trackfamily ";
1180 std::stringstream s;
1182 std::string trackID = s.str();
1184 QueryString +=
" WHERE TrackIDMother=" + trackID;
1186 std::string result =
1187 ExecuteSelectQueryOneValue< std::string >( iDatabaseConnector, QueryString);
1190 std::stringstream(result) >> numb;
1192 bool ismother =
true;
void SafeDownCast(GoDBTraceRow &iRow)
convert a GoDBTraceRow in GoDBMeshRow
void UpdateValueForListTraces(vtkMySQLDatabase *iDatabaseConnector, std::string iNameValue, std::string iValue, std::list< unsigned int > iListTraceIDs)
update in the database the iNameValue with iValue for the traces from iListTraceIDs ...
GoDBCoordinateRow GetCollectionOfTracesCoordMax(vtkMySQLDatabase *DatabaseConnector, std::list< unsigned int > iListCollectionOfTracesID)
return the coordinate max of all the coordinates of the collectionOf traces
std::list< NameWithColorData > GetListNameWithColorDataFromResultsQuery(std::vector< std::vector< std::string > > iResultsQuery)
get the data from the query results to fill a QColor and the corresponding ID
std::list< unsigned int > GetListValuesFromTwoTablesAndCondition(vtkMySQLDatabase *iDatabaseConnector, const std::string &iTableOne, const std::string &iTableTwo, const std::string &iColumn, const FieldWithValue &iJoinCondition, const std::string &iField, const std::vector< std::string > &iVectorValues, const FieldWithValue &iAndCondition)
std::list< NameWithColorData > GetTracesIDsWithColorForATimePoint(vtkMySQLDatabase *iDatabaseConnector, unsigned int iTimePoint)
get all the distinct traces IDs with their QColor for a given timepoint
abstract class to be inherited by Contour,Mesh,Track and GoDBLineageRow
std::vector< std::string > GetAttributesForTraces()
std::vector< std::vector< std::string > > GetValuesFromSeveralTables(vtkMySQLDatabase *DatabaseConnector, const std::string &MainTable, const std::vector< std::string > &SelectFields, const std::string &field, const std::string &value, const std::vector< std::string > &JoinTablesOnTraceTable, bool Distinct)
void SetImgSessionID(unsigned int iImgSessionID)
set m_ImgSessionID to iImgSessionID
std::string GetCollectionOf()
std::list< double * > GetCoordinateCenterBoundingBox(vtkMySQLDatabase *iDatabaseConnector, unsigned int iTraceID)
return a list of the coordinates of all the centers of the bounding boxes for all the collectionOf co...
std::list< unsigned int > GetTwoFieldsFromTwoTables(vtkMySQLDatabase *iDatabaseConnector, const std::string &iTableOne, const std::string &iTableTwo, const FieldWithValue &iOnCondition, const std::string &iColumnOne, const std::string &iColumnTwo, const std::string &iField, const std::vector< std::string > &iListValues, bool Distinct)
int GetTraceIDWithLowestTimePoint(vtkMySQLDatabase *iDatabaseConnector, std::list< unsigned int > iListTraceIDs)
return the traceID with the lowest timepoint or -1 if there is not only one that have the lowest time...
unsigned int GetBoundedBoxTimePoint(vtkMySQLDatabase *iDatabaseConnector, unsigned int iTraceID, bool MinTimePoint=true)
get the timepoint min or max for the trace
std::list< unsigned int > GetSpecificValuesEqualToZero(vtkMySQLDatabase *iDatabaseConnector, const std::string &iColumnName, const std::string &iTableName, const std::vector< std::string > &iVectorConditionFieldOne, const std::string &iFieldTwo)
int GetCoordIDMinForBoundingBoxWithNoTraces(vtkMySQLDatabase *iDatabaseConnector)
return the CoordIDMin for a minimum bounding box
void SetCollectionInfo(std::string iCollectionName, std::string iTracesName, std::string iCollectionOfName)
fill the global values for the collection of traces.
int CreateNewCollection()
Create a new collection Row in the collection table and return the collectionID from the created row:...
int GetMaxTraceIDsForSpecificTimePoint(vtkMySQLDatabase *iDatabaseConnector, std::list< unsigned int > iListTraceIDs, unsigned int iTimePoint)
get the max of the IDs for the traceIDs in iListTraceIDs that have a timepoint equal to iTimePoint ...
std::list< NameWithColorData > GetAllTracesIDsWithColor(vtkMySQLDatabase *iDatabaseConnector)
get all the distinct traces IDs with their QColor
int MinValueForOneColumnInTable(vtkMySQLDatabase *DatabaseConnector, const std::string &ColumnName, const std::string &TableName, const std::string &field, const std::vector< std::string > &VectorValues)
SELECT MIN(ColumnName) FROM TableName WHERE (field = value1 or field = value2....".
std::list< double * > GetCenterBoundingBoxes(vtkMySQLDatabase *DatabaseConnector, const std::string &iTableName, const std::string &iField, const std::string &iValue)
manages a map with keys matching fields of the gofiguredatabase Coordinate table and values of the ma...
virtual bool SetValuesForSpecificID(int ID, vtkMySQLDatabase *iDatabaseConnector)
get the data from the database corresponding to the specific ID and put them in the map ...
void GetFieldsNeededForQueryForColorData(std::vector< std::string > &ioSelectedFields, std::vector< std::string > &ioJoinTablesOnTraceTable)
get all the different parts needed for the query to get the color of traces from the database ...
std::string m_CollectionName
void UpdateValueInDB(vtkMySQLDatabase *DatabaseConnector, std::string iTableName, std::string iColumnName, std::string iNewValue, std::string iField, std::vector< unsigned int > iVectIDs)
std::string GetPoints(vtkMySQLDatabase *iDatabaseConnector, std::string iTraceName, unsigned int iTraceID)
int GetCoordMinID(vtkMySQLDatabase *DatabaseConnector, int iTraceID)
get the min of all the coordinates of the collectionof traces belonging to the trace and record them ...
std::list< unsigned int > GetTraceIDsBelongingToListTimePoints(vtkMySQLDatabase *iDatabaseConnector, std::list< unsigned int > iListTPs)
std::list< unsigned int > VectorStringToUnsgInt(const std::vector< std::string > &iVector)
int SaveInDB(vtkMySQLDatabase *DatabaseConnector)
save the coordinate in the database and return the ID of the new created coordinate or the ID of the ...
void DeleteTraceInDB(int TraceToDelete, vtkMySQLDatabase *DatabaseConnector)
Delete the corresponding trace in the database.
std::list< unsigned int > GetAllSelectedValuesFromTwoTables(vtkMySQLDatabase *iDatabaseConnector, const std::string &iTableOne, const std::string &iTableTwo, const std::string &iColumn, const FieldWithValue &iJoinCondition, const std::vector< FieldWithValue > &iFieldsWithValues, bool Distinct)
this class manages the map with the keys matching the fields of the Lineage gofiguredatabase table an...
std::list< unsigned int > GetLastCreatedTracesIDs(vtkMySQLDatabase *iDatabaseConnector, int iNumberOfTraces)
get the IDs of the last saved traces in the database
std::list< unsigned int > GetTimePointsForTraceIDs(vtkMySQLDatabase *iDatabaseConnector, std::list< unsigned int > iListTraceIDs)
get the timepoints (non distinct) for all the traceIDs in iListTraceIDs
std::list< unsigned int > GetListTracesIDsFromThisCollectionOf(vtkMySQLDatabase *iDatabaseConnector, std::list< unsigned int > iListTraces)
get the list of IDs belonging to the iListTraces as collectionof
unsigned int m_ImgSessionID
this class manages the map with the keys matching the fields of the Track gofiguredatabase table and ...
std::list< unsigned int > GetListCollectionIDs(vtkMySQLDatabase *iDatabaseConnector, std::list< unsigned int > iListTracesIDs, bool ExcludeZero=true, bool Distinct=true)
get the list of IDs that are collection of iListTraces
void DeleteTracesInDB(std::list< unsigned int > TracesToDelete, vtkMySQLDatabase *DatabaseConnector)
Delete in the Database all the traces listed in the list of int.
virtual ~GoDBCollectionOfTraces()
void RecalculateDBBoundingBox(vtkMySQLDatabase *iDatabaseConnector, int iCollectionID)
Calculate the bounding box of the corresponding collection and update it in the database.
bool isMother(vtkMySQLDatabase *iDatabaseConnector, unsigned int iTrackID)
std::string m_CollectionOfName
std::string m_CollectionIDName
int MaxValueForOneColumnInTable(vtkMySQLDatabase *DatabaseConnector, const std::string &ColumnName, const std::string &TableName)
SELECT MAX(ColumnName) FROM TableName This is an overloaded member function, provided for convenience...
std::list< unsigned int > GetTrackFamilyDataFromDB(vtkMySQLDatabase *iDatabaseConnector)
std::vector< std::string > ListSpecificValuesForOneColumn(vtkMySQLDatabase *iDatabaseConnector, const std::string &TableName, const std::string &ColumnName, const std::string &field, const std::string &value, bool ExcludeZero)
SELECT ColumnName FROM TableName WHERE field = value and ColumnName <> 0 (if excludezero) ...
int FindOneID(vtkMySQLDatabase *DatabaseConnector, const std::string &TableName, const std::string &ColumnName, const std::string &field, const std::string &value)
SELECT ColumnName FROM TableName WHERE field = value.
std::string m_TracesIDName
GoDBCoordinateRow GetCollectionOfTracesCoordMin(vtkMySQLDatabase *DatabaseConnector, std::list< unsigned int > iListCollectionOfTracesID)
return the coordinate min of all the coordinates of the selected traces
std::list< unsigned int > GetTrackFamiliesForLineages(vtkMySQLDatabase *iDatabaseConnector, std::list< unsigned int > iLineagesID)
std::list< unsigned int > GetDoublonValuesFromTwoTables(vtkMySQLDatabase *iDatabaseConnector, const std::string &iTableOne, const std::string &iTableTwo, const std::string &iColumn, const FieldWithValue &iJoinCondition, const std::string &iField, const std::vector< std::string > &iVectValues)
std::list< unsigned int > GetListTracesIDWithNoPoints(std::list< unsigned int > iListTracesIDs, vtkMySQLDatabase *iDatabaseConnector)
get the list of tracesIDs that have no points
std::list< unsigned int > GetTraceIDsBelongingToCollectionID(vtkMySQLDatabase *iDatabaseConnector, std::list< unsigned int > iListTraceIDs, unsigned int iCollectionID)
get the tracesIDs contained in iListTraceIDs that have iCollectionID as a collectionID ...
void SetTheTimePointCoordinatesForMesh(unsigned int iTimePoint, int &ioCoordIDMax, int &ioCoordIDMin, vtkMySQLDatabase *iDatabaseConnector)
modify the timepoint to iTimePoint for the coordmax and coordmin and replace the ioCoordIDMax/Min wit...
std::list< unsigned int > GetTraceIDsWithTimePointAndCollectionID(vtkMySQLDatabase *iDatabaseConnector, unsigned int iCollectionID, unsigned int iTimePoint)
get the tracesIDs from the database which have iTimePoint as TCoordMin and iCollectionID as collectio...
std::pair< std::string, QColor > NameWithColorData
void UpdateBoundingBoxInDB(int iCoordIDMin, int iCoordIDMax, int iTraceID, vtkMySQLDatabase *iDatabaseConnector)
Update in the database the coordid max and min of the trace.
std::vector< std::string > GetVectorColumnNames()
put all the keys of the map in a vector
void SetField(const std::string &key, const T &value)
convert the value into a string and assign it to the key in the map
std::list< unsigned int > GetTrackFamilyID(vtkMySQLDatabase *iDatabaseConnector, std::list< unsigned int > iListTrackIDs)
return the trackFamilyIDs the track belongs to (as a mother or as a daughter)
int GetCoordMaxID(vtkMySQLDatabase *DatabaseConnector, int iTraceID)
get the max of all the coordinates of the collectionof traces belonging to the trace and record them ...
std::list< unsigned int > GetTraceIDsWithTimePointInf(vtkMySQLDatabase *iDatabaseConnector, std::list< unsigned int > iListTraceIDs, unsigned int iTimePoint)
get the tracesIDs belonging to iListTraceIDs with a timepoint inf to iTimePoint
this class manages the map with the keys matching the fields of the Mesh gofiguredatabase table and v...
void DeleteRow(vtkMySQLDatabase *DatabaseConnector, std::string TableName, std::string field, std::string value)
std::list< unsigned int > GetTimePointWithSeveralTracesFromTheList(vtkMySQLDatabase *iDatabaseConnector, std::list< unsigned int > iListTraceIDs)
get the list of timepoints where several traces from the list of traces have the same ones ...
int GetMaxValueFromTwoTables(vtkMySQLDatabase *iDatabaseConnector, const std::string &iTableOne, const std::string &iTableTwo, const std::string &iColumn, const FieldWithValue &iJoinCondition, const std::string &iField, const std::vector< std::string > &iVectorValues, const FieldWithValue &iAndCondition)
std::vector< unsigned int > GetTrackFamily(vtkMySQLDatabase *iDatabaseConnector, unsigned int iTrackID)
std::vector< std::string > ListUnsgIntToVectorString(const std::list< unsigned int > &iList)
int GetCoordIDMaxForBoundingBoxWithNoTraces(vtkMySQLDatabase *iDatabaseConnector)
return the CoordIDMax for a minimum bounding box
std::vector< std::string > GetOrderByWithLimit(vtkMySQLDatabase *iDatabaseConnector, const std::string &iColumnName, const std::string &iTableName, const std::string &iField, const std::string &iValue, bool ASC, const std::string &iNumberLimit)
std::list< unsigned int > GetNonMaxTraceIDsForSpecificTimePoint(vtkMySQLDatabase *iDatabaseConnector, std::list< unsigned int > iListTraceIDs, unsigned int iTimePoint, unsigned int iMaxTraceID)
get all the traceIDs except the iMaxTraceID for the timepoint
std::string m_CollectionOfIDName
void UpdateCollectionIDOfSelectedTrace(int iSelectedTraceID, int inewCollectionID, vtkMySQLDatabase *DatabaseConnector)
change the collection ID of the trace
void UpdateCollectionIDOfSelectedTraces(std::list< unsigned int > iListSelectedTraces, unsigned int iCollectionID, vtkMySQLDatabase *iDatabaseConnector)
Update the collectionID of the selected traces in the DB traces table with the new collectionID...
std::list< unsigned int > GetListTimePointsFromTraceIDs(vtkMySQLDatabase *iDatabaseConnector, std::list< unsigned int > iListTraceIDs)
get the list of timepoints for each trace in iListTraceIDs