<None Include="Configuration\-configuration-sxs.json">\r
<CopyToOutputDirectory>Always</CopyToOutputDirectory>\r
</None>\r
- <None Include="Configuration\-configuration-studio.json">\r
+ <None Include="Configuration\configuration-studio.json">\r
<CopyToOutputDirectory>Always</CopyToOutputDirectory>\r
</None>\r
</ItemGroup>\r
org.apache.logging.log4j.api;bundle-version="2.8.2"
Bundle-ClassPath: .
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Import-Package: org.apache.commons.io;version="2.2.0"
+Import-Package: org.apache.commons.io;version="2.2.0",
+ org.apache.commons.net.ftp;version="3.6.0"
{"joblist":[\r
{\r
- "active": false,\r
- "name" : "Felhasználói archiválás",\r
+ "active": true,\r
+ "name" : "OCTOPUS adatok szinkronizálása",\r
+ "template": "sync-octopus.xml",\r
+ "executeimmediate": false,\r
+ "cronexpression": "0/30 * * * * ?",\r
+ "parameters": [\r
+ {"name": "forceFull", "value": true, "type": "java.lang.Boolean"}\r
+ ]\r
+ }, \r
+ {\r
+ "active": true,\r
+ "executeimmediate": false,\r
+ "name" : "Archiválás az ISILON/ARCHIVE mappából",\r
"template": "archive-ondemand.xml",\r
- "executeimmediate": true,\r
- "cronexpression": "0 0 0/1 1/1 * ? *",\r
+ "cronexpression": "0 0 12 * * ?",\r
"parameters": [ \r
{"name": "sourcePath", "value": "/mnt/ISILON/ARCHIVE", "type": "java.lang.String"},\r
{"name": "globalSourcePath", "value": "\\\\10.10.1.100\\BRAAVOS\\ARCHIVE", "type": "java.lang.String"},\r
]\r
},\r
{\r
+ "active": true,\r
+ "name" : "Lejárt ISISLON/ARCHIVE anyagok törlése",\r
+ "template": "delete-materials.xml",\r
+ "executeimmediate": false,\r
+ "cronexpression": "0 0 5 * * ?",\r
+ "parameters": [ \r
+ {"name": "sourcePath", "value": "/mnt/ISILON/ARCHIVE", "type": "java.lang.String"}\r
+ ]\r
+ }, \r
+ {\r
"active": false,\r
- "name" : "Egy archiválás",\r
+ "name" : "Archiválás az ISILON/ARCHIVE/ONE mappából",\r
"template": "archive-ondemand.xml",\r
"executeimmediate": true,\r
"cronexpression": "0 0 0/1 1/1 * ? *",\r
]\r
}, \r
{\r
- "active": false,\r
- "name" : "Lejárt ISISLON/ARCHIVE anyagok törlése",\r
- "template": "delete-materials.xml",\r
- "executeimmediate": true,\r
- "cronexpression": "0 0 0/1 1/1 * ? *",\r
- "parameters": [ \r
- {"name": "sourcePath", "value": "/mnt/ISILON/ARCHIVE", "type": "java.lang.String"}\r
- ]\r
- }, \r
- {\r
"active": false,\r
"name" : "Lejárt ISISLON/ARCHIVE_TEMP anyagok törlése",\r
"template": "delete-materials.xml",\r
]\r
}, \r
{\r
- "active": true,\r
- "name" : "OCTOPUS adatok szinkronizálása",\r
- "template": "sync-octopus.xml",\r
- "executeimmediate": false,\r
- "cronexpression": "0/30 * * * * ?",\r
- "parameters": [\r
- {"name": "forceFull", "value": true, "type": "java.lang.Boolean"}\r
- ]\r
- }, \r
- {\r
"active": false,\r
"name" : "Párhuzamosított teszt folyamat",\r
"template": "fake-concurrent.xml",\r
package user.jobengine.server.steps;\r
\r
import java.io.IOException;\r
+import java.net.InetAddress;\r
import java.net.URI;\r
import java.net.URISyntaxException;\r
-import java.util.ArrayList;\r
import java.util.Calendar;\r
+import java.util.Date;\r
import java.util.List;\r
\r
import org.apache.commons.lang.StringUtils;\r
+import org.apache.commons.net.ftp.FTP;\r
+import org.apache.commons.net.ftp.FTPClient;\r
+import org.apache.commons.net.ftp.FTPReply;\r
import org.apache.logging.log4j.LogManager;\r
import org.apache.logging.log4j.Logger;\r
\r
import user.commons.nosql.NoSQLUtils;\r
import user.commons.octopus.IOctopusAPI;\r
import user.commons.octopus.OctopusAPI;\r
+import user.commons.remotestore.FtpDirectoryLister;\r
+import user.commons.remotestore.RemoteFileHandler;\r
import user.commons.remotestore.RemoteStoreProtocol;\r
import user.jobengine.db.IItemManager;\r
import user.jobengine.server.IJobEngine;\r
import user.jobengine.server.steps.MetadataTypeDetector.MetadataType;\r
\r
public class CopyForArchiveNEXIOMaterialsStep extends JobStep {\r
- private class StoryArchive {\r
- private String mediaHouseId;\r
- private String mediaTitle;\r
- private String mediaDesc;\r
- private List<String> fileNames;\r
-\r
- public void addFile(String fileName) {\r
- if (fileNames == null)\r
- fileNames = new ArrayList<>();\r
- fileNames.add(fileName);\r
- }\r
- }\r
-\r
private static final String MXFEXT = ".MXF";\r
private static final Logger logger = LogManager.getLogger();\r
private static final String NEXIOCLIPS = "nexioclips";\r
return value;\r
}\r
\r
- private BasicDBObject createMetadata(BasicDBObject rundown, BasicDBObject story, BasicDBObject mosObject) {\r
- // TODO Auto-generated method stub\r
- return null;\r
+ private void copy(RundownArchive rundownArchive) throws Exception {\r
+ for (StoryArchive storyArchive : rundownArchive.getStoryArchives()) {\r
+ for (String fileName : storyArchive.getFileNames()) {\r
+ copyFile(fileName, rundownArchive, storyArchive);\r
+ }\r
+ }\r
+ }\r
+\r
+ private void copyFile(String fileName, RundownArchive rundownArchive, StoryArchive storyArchive) throws Exception {\r
+ FTPClient source = ((FtpDirectoryLister) RemoteFileHandler.createLister(sourceUri)).connect();\r
+ FTPClient target = ((FtpDirectoryLister) RemoteFileHandler.createLister(sourceUri)).connect();\r
+ transferFile(source, target, fileName);\r
+ BasicDBObject metadata = createMetadata(rundownArchive, storyArchive);\r
+ transferMetadata(target, metadata);\r
+ createTargetKillDateFile(target, fileName);\r
+ createSourceKillDateFile(source, fileName);\r
+ }\r
+\r
+ private BasicDBObject createMetadata(RundownArchive rundownArchive, StoryArchive storyArchive) {\r
+ // {\r
+ // "itemHouseId": "43",\r
+ // "itemTitle": "Hazahúzó",\r
+ // "itemDescription": null,\r
+ // "mediaHouseId": "002570",\r
+ // "mediaTitle": "2017.12.13",\r
+ // "mediaDescription": null,\r
+ // "ok": false,\r
+ // "userName": "echotest"\r
+ // }\r
+ BasicDBObject result = new BasicDBObject();\r
+ result.put("itemHouseID", rundownArchive.getItemHouseId());\r
+ result.put("itemTitle", rundownArchive.getItemTitle());\r
+ result.put("itemDescription", rundownArchive.getItemDesc());\r
+ result.put("userName", "mediacube");\r
+\r
+ result.put("mediaHouseId", storyArchive.getMediaHouseId());\r
+ result.put("mediaTitle", storyArchive.getMediaTitle());\r
+ result.put("mediaDescription", storyArchive.getMediaDesc());\r
+ return result;\r
+ }\r
+\r
+ private void createSourceKillDateFile(FTPClient source, String fileName) {\r
+ }\r
+\r
+ private void createTargetKillDateFile(FTPClient target, String fileName) {\r
}\r
\r
@StepEntry\r
setAndCheck(nexioPort, nexioUserName, nexioPassword, archiveFtp, archiveUserName, archivePassword, jobEngine);\r
octopusAPI = new OctopusAPI();\r
Calendar scheduledDate = Calendar.getInstance();\r
- // scheduledDate.add(Calendar.DAY_OF_YEAR, -1 * daysBeforeNow);\r
+ scheduledDate.add(Calendar.DAY_OF_YEAR, -1 * daysBeforeNow);\r
List<DBObject> rundowns = octopusAPI.getRundowns(scheduledDate.getTime());\r
if (rundowns == null) {\r
logger.warn(getMarker(), "Nem található adástükör a {} napra.", CalendarUtils.toDateString(scheduledDate));\r
}\r
int index = 1;\r
\r
- List<List<StoryArchive>> rundownArchives = null;\r
for (DBObject r : rundowns) {\r
setProgress(index * 100 / rundowns.size());\r
try {\r
- List<StoryArchive> storyArchive = processRundow(r);\r
- if (storyArchive.size() > 0) {\r
- if (rundownArchives == null)\r
- rundownArchives = new ArrayList<>();\r
- rundownArchives.add(storyArchive);\r
- }\r
+ RundownArchive rundownArchive = processRundow(r);\r
+ if (rundownArchive == null || rundownArchive.isEmpty())\r
+ continue;\r
+ copy(rundownArchive);\r
+\r
} catch (Exception e) {\r
logger.catching(e);\r
logger.error(getMarker(),\r
return mosID + MXFEXT;\r
}\r
\r
- private List<StoryArchive> processRundow(DBObject r) throws Exception {\r
- //storyArchive = new ArrayList<>();\r
+ private RundownArchive processRundow(DBObject r) throws Exception {\r
BasicDBObject rundown = (BasicDBObject) r;\r
long rundownID = rundown.getLong(ID);\r
logger.info("Processing rundown {} {}", rundownID, rundown.getString(IOctopusAPI.NAME));\r
List<DBObject> stories = octopusAPI.getRundownFullStories(rundownID);\r
if (stories == null)\r
return null;\r
- List<StoryArchive> storyArchives = null;\r
+ RundownArchive result = new RundownArchive();\r
+ // {\r
+ // "id":22358752,\r
+ // "rundownType":{"name":"Híradó"},\r
+ // "scheduledStart":{"$date":"2017-12-09T19:00:00.000Z"}\r
+ // }\r
+\r
+ long id = NoSQLUtils.asLong(rundown, IOctopusAPI.ID);\r
+ if (id == 0)\r
+ return null;\r
+ String name = NoSQLUtils.asString(NoSQLUtils.asDBObject(rundown, IOctopusAPI.RUNDOWN_TYPE), IOctopusAPI.NAME);\r
+ if (StringUtils.isBlank(name))\r
+ return null;\r
+ Date scheduledStart = rundown.getDate(IOctopusAPI.SCHEDULED_START);\r
+ if (scheduledStart == null)\r
+ return null;\r
+ String start = CalendarUtils.toHunString(CalendarUtils.createCalendar(scheduledStart));\r
+\r
+ result.setItemHouseId(String.valueOf(id));\r
+ result.setItemTitle(String.format("%s - %s", start, name));\r
+\r
for (DBObject s : stories) {\r
StoryArchive storyArchive = processStory(rundown, s);\r
if (storyArchive == null)\r
continue;\r
- if (storyArchives == null)\r
- storyArchives = new ArrayList<>();\r
- storyArchives.add(storyArchive);\r
+ result.addStoryArchive(storyArchive);\r
}\r
- return storyArchives;\r
+ return result;\r
}\r
\r
private StoryArchive processStory(BasicDBObject rundown, DBObject s) throws Exception {\r
String fileName = processMosObject(rundown, story, mosObject);\r
if (fileName == null)\r
continue;\r
- if (storyArchive == null)\r
+ if (storyArchive == null) {\r
storyArchive = new StoryArchive();\r
+ storyArchive.setMediaHouseId(parentStoryID);\r
+ storyArchive.setMediaTitle(story.getString(IOctopusAPI.NAME));\r
+ storyArchive.setMediaDesc(story.getString(IOctopusAPI.SCRIPT_CONTENT));\r
+ }\r
storyArchive.addFile(fileName);\r
}\r
return null;\r
targetUri.setPassword(archivePassword);\r
}\r
\r
+ private void transferFile(FTPClient source, FTPClient target, String fileName) throws Exception {\r
+ int reply = 0;\r
+\r
+ if (!target.enterRemotePassiveMode())\r
+ throw new Exception("!PASV");\r
+\r
+ reply = source.port(InetAddress.getByName(target.getPassiveHost()), target.getPassivePort());\r
+ if (!FTPReply.isPositiveCompletion(reply))\r
+ throw new Exception("!PORT");\r
+\r
+ if (!source.setFileType(FTP.BINARY_FILE_TYPE))\r
+ throw new Exception("!SOURCE TYPE");\r
+\r
+ if (!target.setFileType(FTP.BINARY_FILE_TYPE))\r
+ throw new Exception("!TARGET TYPE");\r
+\r
+ source.retr(fileName);\r
+ target.stor(fileName);\r
+\r
+ while (true) {\r
+ reply = source.stat();\r
+ if (!FTPReply.isPositiveCompletion(reply))\r
+ throw new Exception("!STAT");\r
+ String replyText = source.getReplyString();\r
+ if ("Transaction completed".equals(replyText))\r
+ break;\r
+ }\r
+ }\r
+\r
+ private void transferMetadata(FTPClient target, BasicDBObject metadata) {\r
+ }\r
+\r
}\r
Bundle-ClassPath: .
Service-Component: OSGI-INF/nexioAPI.xml, OSGI-INF/octopusAPI.xml
Export-Package: user.commons,
+ user.commons.ftp,
user.commons.logging,
user.commons.nexio,
user.commons.nosql,
throw new Exception("OutputLister is null.");
return copy(lister, outputLister, remoteFile, targetName);
}
+
}
\ No newline at end of file
\r
public static BasicDBObject asDBObject(BasicDBObject obj, String name) {\r
BasicDBObject result = null;\r
- if (obj.containsKey(name) && (obj.get(name) instanceof BasicDBObject))\r
+ if (obj != null && obj.containsKey(name) && (obj.get(name) instanceof BasicDBObject))\r
result = (BasicDBObject) obj.get(name);\r
return result;\r
}\r
return result;\r
}\r
\r
+ public static long asLong(BasicDBObject obj, String name) {\r
+ long result = 0;\r
+ if (obj != null && obj.containsKey(name))\r
+ result = obj.getLong(name);\r
+ return result;\r
+ }\r
+\r
+ public static String asString(BasicDBObject obj, String name) {\r
+ String result = null;\r
+ if (obj != null && obj.containsKey(name))\r
+ result = obj.getString(name);\r
+ return result;\r
+ }\r
+\r
public static DB getNoSQLDB() {\r
try {\r
if (noSQLClient == null)\r
static final String STORY_COLLECTION = "stories";\r
static final String FOLDER_COLLECTION = "story_folders";\r
static final String TIME_COLLECTION_NAME = "time";\r
+ static final String SCRIPT_CONTENT = "script_content";\r
+ static final String RUNDOWN_TYPE = "rundownType";\r
static final String LASTUPDATE_TIME = "lastUpdateTime";\r
static final String NEXIO_MOS = "NEXIO.MOS";\r
static final String PARENT_STORY_ID = "parentStoryId";\r
private static final Logger logger = LogManager.getLogger();\r
private static final String LINEFEED = "\r\n";\r
private static final String SIMPLE_LINEFEED = "\n";\r
- private static final String SCRIPT_CONTENT = "script_content";\r
private static final String SAVING_STORY_ID = "Saving story {}";\r
private static final String SAVING_RUNDOWN = "Saving rundown : {} {}";\r
private static final String CHECKING_RUNDOWN = "Checking Rundown {} ({}/{})";\r
private static final String FIELDS_STORIES = "stories,Story.modified,Story.name,Story.id,Story.mosObjects,Story.script,Story.type,Story.format,Story.customColumns,CustomColumn.label,CustomColumn.value";\r
private static final String FIELDS_SLUGS = "slugs,Slug.story,Slug.position,Story.name,Story.id,Story.modified,Story.mosObjects,Story.script,Story.type,Story.format,Story.customColumns,CustomColumn.label,CustomColumn.value";\r
private static final String FIELDS_RUNDOWN_LIST = "id,name,modified,scheduledStart,rundownType,RundownType.name,slugs,Slug.storyId,Slug.position";\r
- // private static final String FIELDS_STORY_FOLDER_LIST = "id,name,modified,stories,Story.id";\r
- private static final String FIELDS_STORY_FOLDER_LIST = "id,name,modified";\r
+ private static final String FIELDS_STORY_FOLDER_LIST = "id,name,modified,stories,Story.id";\r
+ //private static final String FIELDS_STORY_FOLDER_LIST = "id,name,modified";\r
private static final String RUNDOWN = "Rundown";\r
private static final String OCTOPUS_DEVICE_NAME = "Octopus-Device-Name";\r
private static final String OCTOPUS_DEVICE_ID = "Octopus-Device-Id";\r
return rundowns;\r
}\r
\r
- private BasicDBObject queryRundown(long id) {\r
+ private BasicDBObject queryRundown(BasicDBObject rundown) {\r
logger.trace(ENTER);\r
BasicDBObject result = null;\r
- String fields = FIELDS_SLUGS;\r
- Response response = query(String.format("%s/", RUNDOWN) + id, fields).get();\r
+ long id = NoSQLUtils.asLong(rundown, IOctopusAPI.ID);\r
+ Response response = query(String.format("%s/", RUNDOWN) + id, FIELDS_SLUGS).get();\r
String json = response.readEntity(String.class);\r
BasicDBObject resultObject = (BasicDBObject) JSONUtil.jsonToDbObject(json);\r
if (resultObject == null)\r
- logger.error("Rundown {} is not available", id);\r
+ logger.error("Rundown {} {} is not available", id, rundown.getString(IOctopusAPI.NAME));\r
else\r
result = NoSQLUtils.asDBObject(resultObject, RESULT);\r
logger.trace(EXIT);\r
return result;\r
}\r
\r
- private BasicDBObject queryStoryFolder(long id) {\r
+ private BasicDBObject queryStoryFolder(BasicDBObject storyFolder) {\r
logger.trace(ENTER);\r
BasicDBObject result = null;\r
- String fields = FIELDS_STORIES;\r
- Response response = query(String.format("%s/", STORY_FOLDER) + id, fields).get();\r
+ long id = NoSQLUtils.asLong(storyFolder, IOctopusAPI.ID);\r
+ Response response = query(String.format("%s/", STORY_FOLDER) + id, FIELDS_STORIES).get();\r
String json = response.readEntity(String.class);\r
BasicDBObject resultObject = (BasicDBObject) JSONUtil.jsonToDbObject(json);\r
- if (resultObject != null)\r
+ if (resultObject == null)\r
+ logger.error("StoryFolder {} {} is not available", id, storyFolder.getString(IOctopusAPI.NAME));\r
+ else\r
result = NoSQLUtils.asDBObject(resultObject, RESULT);\r
logger.trace(EXIT);\r
return result;\r
\r
private void storeRundown(BasicDBObject rundown, Date lastUpdateTime) {\r
logger.trace(ENTER);\r
- long rundownID = rundown.getLong(IOctopusAPI.ID);\r
String name = rundown.containsKey(IOctopusAPI.NAME) ? rundown.getString(IOctopusAPI.NAME) : null;\r
logger.debug("Storing rundown {} {}", name, rundown.get(IOctopusAPI.SCHEDULED_START));\r
- BasicDBObject rundownWithStories = queryRundown(rundownID);\r
+ BasicDBObject rundownWithStories = queryRundown(rundown);\r
if (rundownWithStories != null) {\r
BasicDBList stories = NoSQLUtils.asDBList(rundownWithStories, IOctopusAPI.SLUGS);\r
if (stories != null)\r
rundown.put(IOctopusAPI.MODIFIED, toDate(rundown, IOctopusAPI.MODIFIED));\r
DBCollection collection = db.getCollection(RUNDOWN_COLLECTION);\r
if (lastUpdateTime == null || (lastUpdateTime != null && isModified(lastUpdateTime, rundown))) {\r
- logger.debug(SAVING_RUNDOWN, rundownID, name);\r
+ //logger.debug(SAVING_RUNDOWN, rundownID, name);\r
collection.save(rundown);\r
}\r
}\r
if (storyFolderRef != null)\r
story.put(IOctopusAPI.REF_STORYFOLDER, storyFolderRef);\r
String scriptContent = extractScriptContent(story);\r
- story.put(SCRIPT_CONTENT, scriptContent);\r
+ story.put(IOctopusAPI.SCRIPT_CONTENT, scriptContent);\r
if (modifiedMOS == null || modifiedMOS.isEmpty()) {\r
if (story.containsKey(IOctopusAPI.MOS_OBJECTS))\r
story.remove(IOctopusAPI.MOS_OBJECTS);\r
\r
private void storeStoryFolder(BasicDBObject storyFolder, Date lastUpdateTime) {\r
logger.trace(ENTER);\r
- long storyFolderID = storyFolder.getLong(IOctopusAPI.ID);\r
-\r
- BasicDBObject storyFoldersWithStories = queryStoryFolder(storyFolderID);\r
- BasicDBList stories = NoSQLUtils.asDBList(storyFoldersWithStories, IOctopusAPI.STORIES);\r
- if (stories != null)\r
- storeStoryFolderStories(stories, lastUpdateTime);\r
- storyFolder.put(IOctopusAPI.MODIFIED, toDate(storyFolder, IOctopusAPI.MODIFIED));\r
- DBCollection collection = db.getCollection(FOLDER_COLLECTION);\r
- if (lastUpdateTime == null || (lastUpdateTime != null && isModified(lastUpdateTime, storyFolder))) {\r
- String name = storyFolder.getString(IOctopusAPI.NAME);\r
- logger.debug("Storing story folder {}", name);\r
- collection.save(storyFolder);\r
+ BasicDBObject storyFoldersWithStories = queryStoryFolder(storyFolder);\r
+ if (storyFoldersWithStories != null) {\r
+ BasicDBList stories = NoSQLUtils.asDBList(storyFoldersWithStories, IOctopusAPI.STORIES);\r
+ if (stories != null)\r
+ storeStoryFolderStories(stories, lastUpdateTime);\r
+ storyFolder.put(IOctopusAPI.MODIFIED, toDate(storyFolder, IOctopusAPI.MODIFIED));\r
+ DBCollection collection = db.getCollection(FOLDER_COLLECTION);\r
+ if (lastUpdateTime == null || (lastUpdateTime != null && isModified(lastUpdateTime, storyFolder))) {\r
+ String name = storyFolder.getString(IOctopusAPI.NAME);\r
+ logger.debug("Storing story folder {}", name);\r
+ collection.save(storyFolder);\r
+ }\r
}\r
logger.trace(EXIT);\r
}\r
}\r
}\r
\r
- private void connect() throws Exception {\r
+ public FTPClient connect() throws Exception {\r
if (ftpClient != null)\r
- return;\r
+ return ftpClient;\r
String path = storeUri.toString(true);\r
String[] pathElements = path.split("/");\r
ftpClient = new FTPClient();\r
}\r
}\r
\r
+ return ftpClient;\r
}\r
\r
@Override\r
<image src="/img/mediacube_logo_v2_50x50.png">\r
<!-- <custom-attributes org.zkoss.zul.image.preload="true" /> -->\r
</image>\r
- <label style="color:#e3e3e3;font-size:20px;font-weight:bold">MediaCube v2.1.6</label>\r
+ <label style="color:#e3e3e3;font-size:20px;font-weight:bold">MediaCube v2.1.7</label>\r
</div>\r
</west>\r
<center border="0">\r
--- /dev/null
+package user.jobengine.server.steps;\r
+\r
+import java.util.ArrayList;\r
+import java.util.List;\r
+\r
+class RundownArchive {\r
+ private String itemHouseId;\r
+ private String itemTitle;\r
+ private String itemDesc;\r
+ private List<StoryArchive> storyArchives;\r
+\r
+ public void addStoryArchive(StoryArchive storyArchive) {\r
+ if (storyArchives == null)\r
+ storyArchives = new ArrayList<>();\r
+ storyArchives.add(storyArchive);\r
+ }\r
+\r
+ public String getItemDesc() {\r
+ return itemDesc;\r
+ }\r
+\r
+ public String getItemHouseId() {\r
+ return itemHouseId;\r
+ }\r
+\r
+ public String getItemTitle() {\r
+ return itemTitle;\r
+ }\r
+\r
+ public List<StoryArchive> getStoryArchives() {\r
+ return storyArchives;\r
+ }\r
+\r
+ public boolean isEmpty() {\r
+ return storyArchives == null || storyArchives.isEmpty();\r
+ }\r
+\r
+ public void setItemDesc(String itemDesc) {\r
+ this.itemDesc = itemDesc;\r
+ }\r
+\r
+ public void setItemHouseId(String itemHouseId) {\r
+ this.itemHouseId = itemHouseId;\r
+ }\r
+\r
+ public void setItemTitle(String itemTitle) {\r
+ this.itemTitle = itemTitle;\r
+ }\r
+}
\ No newline at end of file
--- /dev/null
+package user.jobengine.server.steps;\r
+\r
+import java.util.ArrayList;\r
+import java.util.List;\r
+\r
+class StoryArchive {\r
+ private String mediaHouseId;\r
+ private String mediaTitle;\r
+ private String mediaDesc;\r
+ private List<String> fileNames;\r
+\r
+ public void addFile(String fileName) {\r
+ if (fileNames == null)\r
+ fileNames = new ArrayList<>();\r
+ fileNames.add(fileName);\r
+ }\r
+\r
+ public List<String> getFileNames() {\r
+ return fileNames;\r
+ }\r
+\r
+ public String getMediaHouseId() {\r
+ return mediaHouseId;\r
+ }\r
+\r
+ public void setMediaHouseId(String mediaHouseId) {\r
+ this.mediaHouseId = mediaHouseId;\r
+ }\r
+\r
+ public String getMediaTitle() {\r
+ return mediaTitle;\r
+ }\r
+\r
+ public void setMediaTitle(String mediaTitle) {\r
+ this.mediaTitle = mediaTitle;\r
+ }\r
+\r
+ public String getMediaDesc() {\r
+ return mediaDesc;\r
+ }\r
+\r
+ public void setMediaDesc(String mediaDesc) {\r
+ this.mediaDesc = mediaDesc;\r
+ }\r
+}
\ No newline at end of file