import java.util.Calendar;\r
import java.util.Date;\r
import java.util.List;\r
-import java.util.regex.Pattern;\r
\r
import org.apache.logging.log4j.LogManager;\r
import org.apache.logging.log4j.Logger;\r
DBCollection storyCollection = db.getCollection(STORY_COLLECTION_NAME);\r
DBCollection rundownCollection = db.getCollection(RUNDOWN_COLLECTION_NAME);\r
List<DBObject> queryedRundownsFromStoryCollection = null;\r
- BasicDBObject id = new BasicDBObject("id", placeHolderID);\r
+ BasicDBObject id = new BasicDBObject("objId", placeHolderID);\r
BasicDBObject elemmatch = new BasicDBObject("$elemMatch", id);\r
- BasicDBObject mosObjects = new BasicDBObject("mosObjects", elemmatch);\r
+ BasicDBObject mosObjects = new BasicDBObject(MOS_OBJECTS, elemmatch);\r
//db.testStoryCollection.find({"mosObjects": {$elemMatch: {"globalId": "OCTOPUS-ECHOTV-2429902"}}})\r
DBCursor find = storyCollection.find(mosObjects);\r
result = getParentsByReferences(find, rundownCollection, queryedRundownsFromStoryCollection, RUNDOWN);\r
\r
// { rundown: { $elemMatch: { id: 44622396 } }}\r
DBCursor find = collection\r
- .find(new BasicDBObject(RUNDOWN, new BasicDBObject("$elemMatch", new BasicDBObject(ID, rundownID))),\r
- new BasicDBObject(ID, 1).append("name", 1).append("modified", 1).append(RUNDOWN, 1).append("format", 1).append("mosObjects", 1))\r
+ .find(new BasicDBObject(RUNDOWN, new BasicDBObject("$elemMatch", new BasicDBObject(ID, rundownID))), new BasicDBObject(ID, 1)\r
+ .append("parentStoryId", 1).append("name", 1).append("modified", 1).append(RUNDOWN, 1).append("format", 1).append("mosObjects", 1))\r
.sort(new BasicDBObject("name", 1));\r
if (find.hasNext())\r
result = find.toArray();\r
}\r
\r
@Override\r
- public List<DBObject> getStoriesByIDRegex(String id) {\r
+ public List<DBObject> getStoriesByID(String id) {\r
List<DBObject> result = null;\r
DBCollection collection = db.getCollection(STORY_COLLECTION_NAME);\r
- Pattern regex = Pattern.compile(id, Pattern.CASE_INSENSITIVE);\r
- /*BasicDBObject query = new BasicDBObject("id", new BasicDBObject("$regex", id));*/\r
- BasicDBObject query = new BasicDBObject("id", Pattern.compile(id));\r
- logger.info(query);\r
- DBCursor find = collection.find(query);\r
+ //Pattern regex = Pattern.compile(id, Pattern.CASE_INSENSITIVE);\r
+ //BasicDBObject query = new BasicDBObject("id", Pattern.compile(id));\r
+ DBCursor find = collection.find(new BasicDBObject("id", id));\r
+ if (find.hasNext())\r
+ result = find.toArray();\r
+ return result;\r
+ }\r
+\r
+ @Override\r
+ public List<DBObject> getStoriesByParentStoryID(String id) {\r
+ List<DBObject> result = null;\r
+ DBCollection collection = db.getCollection(STORY_COLLECTION_NAME);\r
+ //Pattern regex = Pattern.compile(id, Pattern.CASE_INSENSITIVE);\r
+ //BasicDBObject query = new BasicDBObject("id", Pattern.compile(id));\r
+ DBCursor find = collection.find(new BasicDBObject("parentStoryId", id));\r
if (find.hasNext())\r
result = find.toArray();\r
return result;\r
public List<DBObject> getStoriesByPlaceHolderId(String placeHolderID) {\r
List<DBObject> result = new ArrayList<>();\r
DBCollection storyCollection = db.getCollection(STORY_COLLECTION_NAME);\r
- DBCollection rundownCollection = db.getCollection(RUNDOWN_COLLECTION_NAME);\r
- BasicDBObject globalId = new BasicDBObject("id", placeHolderID);\r
+ BasicDBObject globalId = new BasicDBObject("objId", placeHolderID);\r
BasicDBObject elemmatch = new BasicDBObject("$elemMatch", globalId);\r
- BasicDBObject mosObjects = new BasicDBObject("mosObjects", elemmatch);\r
-\r
+ BasicDBObject mosObjects = new BasicDBObject(MOS_OBJECTS, elemmatch);\r
DBCursor find = storyCollection.find(mosObjects);\r
if (find.hasNext())\r
result.add(find.next());\r
List<DBObject> result = null;\r
DBCollection collection = db.getCollection(STORY_COLLECTION_NAME);\r
DBCursor find = collection\r
- .find(new BasicDBObject(STORY_FOLDER, new BasicDBObject("$elemMatch", new BasicDBObject(ID, storyFolderId))),\r
- new BasicDBObject(ID, 1).append("name", 1).append("modified", 1).append(STORY_FOLDER, 1).append("format", 1).append("mosObjects", 1))\r
+ .find(new BasicDBObject(STORY_FOLDER, new BasicDBObject("$elemMatch", new BasicDBObject(ID, storyFolderId))), new BasicDBObject(ID, 1)\r
+ .append("parentStoryId", 1).append("name", 1).append("modified", 1).append(STORY_FOLDER, 1).append("format", 1).append("mosObjects", 1))\r
.sort(new BasicDBObject("name", 1));\r
if (find.hasNext())\r
result = find.toArray();\r
DBCollection storyCollection = db.getCollection(STORY_COLLECTION_NAME);\r
DBCollection rundownCollection = db.getCollection(STORY_FOLDER_COLLECTION_NAME);\r
List<DBObject> queryedRundownsFromStoryCollection = null;\r
- BasicDBObject globalId = new BasicDBObject("id", placeHolderID);\r
+ BasicDBObject globalId = new BasicDBObject("objId", placeHolderID);\r
BasicDBObject elemmatch = new BasicDBObject("$elemMatch", globalId);\r
BasicDBObject mosObjects = new BasicDBObject("mosObjects", elemmatch);\r
DBCursor find = storyCollection.find(mosObjects, new BasicDBObject(STORY_FOLDER, 1).append("_id", 0));\r
import user.commons.remotestore.ProgressEvent;\r
\r
public class OctopusDataMiner implements Runnable {\r
+ private static final String PARENT_STORY_ID = "parentStoryId";\r
+ private static final String VALUE = "value";\r
+ private static final String CUSTOM_COLUMNS = "customColumns";\r
private static final String MOS_ID = "mosId";\r
private static final String MOS_OBJECTS = "mosObjects";\r
private static final String NAME = "name";\r
// return result <= 0;\r
// }\r
\r
+ private String GetCustomColumnValue(String columnName, BasicDBObject story) {\r
+ String result = null;\r
+ List<BasicDBObject> customColumns = NoSQLUtils.asList(asDBList(story, CUSTOM_COLUMNS));\r
+ for (BasicDBObject customColumn : customColumns) {\r
+ if (!customColumn.containsKey(LABEL))\r
+ continue;\r
+ String currentName = customColumn.getString(LABEL);\r
+ if (currentName == null)\r
+ continue;\r
+ if (!currentName.toLowerCase().equals(columnName.toLowerCase()))\r
+ continue;\r
+ if (!customColumn.containsKey(VALUE))\r
+ continue;\r
+ result = customColumn.getString(VALUE);\r
+ break;\r
+ }\r
+ return result;\r
+ }\r
+\r
private Date getLastUpdateTime() {\r
Date result = null;\r
DBCollection collection = db.getCollection(TIME_COLLECTION_NAME);\r
logger.trace(FINISHED);\r
}\r
\r
- public void setLastUpdateTime(Date lastUpdateTime) {\r
- DBCollection collection = db.getCollection(OctopusAPI.TIME_COLLECTION_NAME);\r
- DBObject timeObject = collection.findOne();\r
- if (timeObject == null)\r
- timeObject = new BasicDBObject();\r
- timeObject.put(LASTUPDATE_TIME, lastUpdateTime);\r
-\r
- collection.save(timeObject);\r
- }\r
-\r
// private void insertStoryFoldersToDB2() {\r
// DBCollection collection = db.getCollection(STORY_FOLDER_COLLECTION_NAME);\r
// Set<String> storyKeys = storyFolders.keySet();\r
// storyFolders = converter.convertBasicDBObjectFromJson(result);\r
// }\r
\r
+ public void setLastUpdateTime(Date lastUpdateTime) {\r
+ DBCollection collection = db.getCollection(OctopusAPI.TIME_COLLECTION_NAME);\r
+ DBObject timeObject = collection.findOne();\r
+ if (timeObject == null)\r
+ timeObject = new BasicDBObject();\r
+ timeObject.put(LASTUPDATE_TIME, lastUpdateTime);\r
+\r
+ collection.save(timeObject);\r
+ }\r
+\r
private void storeRundown(BasicDBObject rundown, Date lastUpdateTime) {\r
logger.trace(ENTER);\r
long rundownID = rundown.getLong(ID);\r
story.remove(MOS_OBJECTS);\r
} else\r
story.put(MOS_OBJECTS, modifiedMOS);\r
+\r
+ String parentSoryId = GetCustomColumnValue(PARENT_STORY_ID, story);\r
+ if (parentSoryId == null)\r
+ story.append(PARENT_STORY_ID, storyID);\r
+ else\r
+ story.append(PARENT_STORY_ID, parentSoryId);\r
logger.debug(SAVING_STORY_ID, storyID);\r
collection.save(story);\r
logger.trace(EXIT);\r