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;