From 3d1309e830c5366157edd9d5db1420b04990bfdf Mon Sep 17 00:00:00 2001 From: =?utf8?q?V=C3=A1s=C3=A1ry=20D=C3=A1niel?= Date: Sun, 2 Aug 2020 20:49:16 +0000 Subject: [PATCH] git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube;C31913 --- client/AudioRecorder/MetadataSelectorForm.cs | 2 +- client/DxPlay/PlayerForm.cs | 2 +- ....json => -ACTIVE-configuration-promo.json} | 0 .../Maestro/Configuration/configuration.json | 2 +- client/Maestro/Configuration/editor-mv.json | 2 +- client/Maestro/Maestro.csproj | 4 +- client/Maestro/MaestroForm.Designer.cs | 141 +- client/Maestro/MaestroForm.Metadata.cs | 4 +- client/Maestro/MaestroForm.resx | 8 +- client/Maestro/Properties/AssemblyInfo.cs | 4 +- .../Maestro/Properties/Resources.Designer.cs | 22 +- client/Maestro/Properties/Resources.resx | 64 +- .../Resources/outline_filter_1_black_24dp.png | Bin 0 -> 153 bytes .../Resources/outline_flip_black_24dp.png | Bin 0 -> 144 bytes client/MetadataSelector/MetadataIDSelector.cs | 2 +- client/PlanAIRClient/TrafficIDSelector.cs | 6 +- server/-configuration/AMC/soap/getCustomView | 8 + .../AMC/soap/getMediaUsageByUTRange | 10 + server/-configuration/mediacube.json | 4 +- .../run-mediacube-server-mv.launch | 2 +- .../run-mediacube-server-user.launch | 2 +- .../run-mediacube-server.launch | 2 +- .../mediacube/executors/tests/SmallTests.java | 79 +- .../config/config.xml | 4 +- .../jobtemplates/cancelable.xml | 13 +- .../fork-validate-and-archive.xml | 10 +- .../fork-validate-and-restore.xml | 10 +- .../peablebeach-missingmaterial-checker.xml | 4 + .../server/steps/CancelableStep.java | 10 +- .../jobengine/server/steps/EscortFiles.java | 31 +- .../server/steps/FileCleanupStep.java | 6 +- .../server/steps/FileValidatorStep.java | 24 +- .../server/steps/ForkByStatusFileStep.java | 121 - .../server/steps/ForkDownloadStep.java | 143 + .../server/steps/ForkUploadStep.java | 142 + .../steps/GenericArchiveCheckerStep.java | 19 +- .../HarrisMissingMaterialCheckerStep.java | 43 +- .../server/steps/MetadataPersisterStep.java | 9 +- .../server/steps/NEXIOArchiveCheckerStep.java | 54 +- .../user/jobengine/server/steps/PBQuery.java | 308 ++ .../server/steps/RegisterUserRestoreStep.java | 70 + .../server/steps/TestForkCancelableStep.java | 22 +- .../jobengine/server/steps/TransferStep.java | 10 +- ... build-user-jobengine-osgi-commons.launch} | 0 .../src/pb/wsclient/PBClientTest.java | 73 - .../src/user/commons/DownloadableMedia.java | 7 +- .../src/user/commons/IJob.java | 6 + .../src/user/commons/Job.java | 33 +- .../src/user/commons/StoreUri.java | 5 +- .../commons/remotestore/TSMInputStream.java | 11 +- .../user/commons/remotestore/TSMLister.java | 34 +- .../user/jobengine/db/BreakDAO_SJProfile0.ser | Bin 3253 -> 3253 bytes .../db/DomainCategoryDAO_SJProfile0.ser | Bin 2552 -> 2552 bytes .../jobengine/db/DomainDAO_SJProfile0.ser | Bin 4043 -> 4043 bytes .../db/DomainIndexDAO_SJProfile0.ser | Bin 3143 -> 3143 bytes .../jobengine/db/EntityBaseDAO_SJProfile0.ser | Bin 2286 -> 2286 bytes .../jobengine/db/FileTypeDAO_SJProfile0.ser | Bin 3872 -> 3872 bytes .../jobengine/db/FolderDAO_SJProfile0.ser | Bin 2479 -> 2479 bytes .../jobengine/db/HelperDAO_SJProfile0.ser | Bin 1674 -> 1674 bytes .../user/jobengine/db/ItemDAO_SJProfile0.ser | Bin 4337 -> 4337 bytes .../jobengine/db/ItemTypeDAO_SJProfile0.ser | Bin 2933 -> 2933 bytes .../user/jobengine/db/JobDAO_SJProfile0.ser | Bin 4625 -> 5413 bytes .../db/JobParametersDAO_SJProfile0.ser | Bin 2355 -> 2355 bytes .../jobengine/db/MasterIdDAO_SJProfile0.ser | Bin 1655 -> 1655 bytes .../user/jobengine/db/MediaDAO_SJProfile0.ser | Bin 4847 -> 4847 bytes .../user/jobengine/db/MediaFileDAO.java | 65 +- .../jobengine/db/MediaFileDAO_SJProfile0.ser | Bin 4175 -> 4426 bytes .../jobengine/db/MetadataDAO_SJProfile0.ser | Bin 6747 -> 6747 bytes .../db/MetadataElementDAO_SJProfile0.ser | Bin 2990 -> 2990 bytes .../db/MetadataTypeDAO_SJProfile0.ser | Bin 3013 -> 3013 bytes .../db/RemoteStoreDAO_SJProfile0.ser | Bin 3178 -> 3178 bytes .../db/SceneContentDAO_SJProfile0.ser | Bin 3376 -> 3376 bytes .../user/jobengine/db/SceneDAO_SJProfile0.ser | Bin 2973 -> 2973 bytes .../db/SearchDefinitionDAO_SJProfile0.ser | Bin 3528 -> 3528 bytes .../user/jobengine/db/ShotDAO_SJProfile0.ser | Bin 3487 -> 3487 bytes .../user/jobengine/db/StoreDAO_SJProfile0.ser | Bin 3164 -> 3164 bytes .../jobengine/db/StoreUriDAO_SJProfile0.ser | Bin 4756 -> 4756 bytes .../jobengine/db/UserInfoDAO_SJProfile0.ser | Bin 3637 -> 3637 bytes .../db/WorkflowActionDAO_SJProfile0.ser | Bin 4737 -> 4737 bytes .../scripts/009_add_related_to_job.sql | 39 + .../scripts/010_add_lookup_related.sql | 30 + .../src/user/jobengine/db/EntityBaseDAO.sqlj | 30 +- .../src/user/jobengine/db/IEntityBaseDAO.java | 2 + .../src/user/jobengine/db/IItemManager.java | 5 + .../src/user/jobengine/db/ItemManager.java | 30 + .../src/user/jobengine/db/JobDAO.sqlj | 23 +- .../src/user/jobengine/db/JobIter.sqlj | 2 +- .../src/user/jobengine/db/MediaFile.java | 9 + .../src/user/jobengine/db/MediaFileDAO.sqlj | 17 +- .../src/user/jobengine/db/Store.java | 25 + .../pages/access-denied.zul | 12 + .../pages/alternate_retrievebatchselector.zul | 58 + .../pages/joblist.zul | 19 +- .../user.jobengine.osgi.server/pages/menu.zul | 2 +- .../pages/pwdgen.zul | 38 + .../pages/retrievebatchselector.zul | 2 +- .../pages/retrieveselector.zul | 2 +- .../resources/i3-label_hu.properties | 2 +- .../src/user/jobengine/server/IJobEngine.java | 8 + .../user/jobengine/server/IJobRuntime.java | 6 +- .../src/user/jobengine/server/JobEngine.java | 90 +- .../src/user/jobengine/server/JobRuntime.java | 152 +- .../jobengine/server/JobStepExecutor.java | 10 +- .../actions/CancelWaitExecutorAction.java | 9 +- .../server/actions/StatusMachine.java | 4 +- .../server/messages/CancelRequest.java | 4 +- .../AlternateRetrieveBatchSelectorModel.java | 153 + .../user/jobengine/zk/model/IndexModel.java | 2 +- .../user/jobengine/zk/model/JobListModel.java | 167 +- .../zk/model/JobParametersModel.java | 10 +- .../user/jobengine/zk/model/MenuModel.java | 5 +- .../user/jobengine/zk/model/PwdGenModel.java | 40 + .../zk/model/RetrieveBatchSelectorModel.java | 12 - .../user/jobengine/zk/model/SearchModel.java | 11 + .../jobengine/zk/util/AdminAuthInitiator.java | 2 +- .../jobengine/zk/util/LocalUserHandler.java | 7 +- .../user/jobengine/zk/util/SessionUtil.java | 20 + server/user.peablebeach.api/.classpath | 8 + server/user.peablebeach.api/.project | 28 + .../org.eclipse.core.resources.prefs | 2 + .../.settings/org.eclipse.jdt.core.prefs | 7 + .../.settings/org.eclipse.m2e.core.prefs | 4 + .../.settings/org.eclipse.pde.core.prefs | 4 + .../org.jboss.ide.eclipse.as.core.prefs | 2 + .../user.peablebeach.api/META-INF/MANIFEST.MF | 13 + .../build-user-peablebeach-api.launch | 17 + server/user.peablebeach.api/build.properties | 4 + .../user.peablebeach.api/libs/pb_asm-5.2.jar | Bin 0 -> 53259 bytes .../libs/pb_cxf-core-3.2.7.jar | Bin 0 -> 1404470 bytes .../libs/pb_cxf-rt-bindings-soap-3.2.7.jar | Bin 0 -> 181700 bytes .../libs/pb_cxf-rt-bindings-xml-3.2.7.jar | Bin 0 -> 38316 bytes .../libs/pb_cxf-rt-databinding-jaxb-3.2.7.jar | Bin 0 -> 106397 bytes .../libs/pb_cxf-rt-frontend-jaxws-3.2.7.jar | Bin 0 -> 346335 bytes .../libs/pb_cxf-rt-frontend-simple-3.2.7.jar | Bin 0 -> 103859 bytes .../libs/pb_cxf-rt-transports-http-3.2.7.jar | Bin 0 -> 363688 bytes .../libs/pb_cxf-rt-ws-addr-3.2.7.jar | Bin 0 -> 75498 bytes .../libs/pb_cxf-rt-ws-policy-3.2.7.jar | Bin 0 -> 214511 bytes .../libs/pb_cxf-rt-wsdl-3.2.7.jar | Bin 0 -> 173366 bytes .../pb_geronimo-javamail_1.4_mail-1.8.4.jar | Bin 0 -> 463813 bytes .../libs/pb_jaxb-core-2.2.11.jar | Bin 0 -> 252336 bytes .../libs/pb_jaxb-impl-2.2.11.jar | Bin 0 -> 1047863 bytes .../libs/pb_jaxb-xjc-2.2.11.jar | Bin 0 -> 2033945 bytes .../libs/pb_jcl-over-slf4j-1.7.25.jar | Bin 0 -> 16515 bytes .../libs/pb_neethi-3.1.1.jar | Bin 0 -> 74282 bytes .../libs/pb_slf4j-api-1.7.25.jar | Bin 0 -> 41203 bytes .../libs/pb_slf4j-jdk14-1.7.25.jar | Bin 0 -> 8460 bytes .../libs/pb_stax2-api-3.1.4.jar | Bin 0 -> 161867 bytes .../libs/pb_woodstox-core-5.0.3.jar | Bin 0 -> 512742 bytes .../libs/pb_wsdl4j-1.6.3.jar | Bin 0 -> 186758 bytes .../libs/pb_xml-resolver-1.2.jar | Bin 0 -> 84091 bytes .../libs/pb_xmlschema-core-2.2.3.jar | Bin 0 -> 172917 bytes server/user.peablebeach.api/pom.xml | 15 + .../user.peablebeach.api/src/MarinaAPI.wsdl | 1402 +++++ server/user.peablebeach.api/src/generate.bat | 4 + .../peablebeach/api/MediaUsageComparator.java | 42 + .../peablebeach/api/PBMissingMaterialSrc.java | 201 + server/user.peablebeach.api/src/import.bat | 5 + .../src}/include/MarinaTypes.xsd | 0 server/user.peablebeach.api/src/jaxb.xml | 36 + .../pb/wsclient/ActionScheduleProperties.java | 0 .../src/pb/wsclient/AsRunActionEvent.java | 0 .../src/pb/wsclient/AsRunData.java | 0 .../src/pb/wsclient/AsRunEventTemplate.java | 0 .../src/pb/wsclient/AsRunJob.java | 0 .../src/pb/wsclient/AsRunJobList.java | 0 .../src/pb/wsclient/AsRunJobProperties.java | 0 .../src/pb/wsclient/AsRunPrimaryEvent.java | 0 .../pb/wsclient/AsRunPrimaryEventList.java | 0 .../src/pb/wsclient/AsRunSecondaryEvent.java | 0 .../pb/wsclient/AsRunSecondaryEventList.java | 0 .../src/pb/wsclient/AsRunUserObservation.java | 0 .../pb/wsclient/AspectRatioProperties.java | 0 .../src/pb/wsclient/Audio.java | 0 .../src/pb/wsclient/AudioTrack.java | 0 .../src/pb/wsclient/AudioTracks.java | 0 .../src/pb/wsclient/AutomationStateType.java | 0 .../src/pb/wsclient/CGTransitionEnum.java | 0 .../src/pb/wsclient/CgProperties.java | 0 .../src/pb/wsclient/ChangeCounts.java | 0 .../src/pb/wsclient/ChannelProperties.java | 0 .../src/pb/wsclient/Classification.java | 0 .../src/pb/wsclient/Classifications.java | 0 .../src/pb/wsclient/Component.java | 0 .../src/pb/wsclient/ComponentHealth.java | 0 .../src/pb/wsclient/ComponentList.java | 0 .../pb/wsclient/ComponentListContainer.java | 0 .../src/pb/wsclient/ComponentTag.java | 0 .../pb/wsclient/ComponentTagContainer.java | 0 .../src/pb/wsclient/Config.java | 0 .../src/pb/wsclient/ConfigContainer.java | 0 .../wsclient/ConfigRequestListContainer.java | 0 .../src/pb/wsclient/ConfigType.java | 0 .../src/pb/wsclient/DateTimecodeRange.java | 0 .../wsclient/DateTimecodeRangeContainer.java | 0 .../src/pb/wsclient/DeleteMedia.java | 0 .../src/pb/wsclient/DeleteMediaInstance.java | 0 .../DeleteMediaInstanceContainer.java | 0 .../DeleteMediaInstanceKeyContainer.java | 0 .../src/pb/wsclient/Direction.java | 0 .../src/pb/wsclient/DolphinCGProperties.java | 0 .../pb/wsclient/DolphinGraphicProperties.java | 0 .../src/pb/wsclient/EffectProperties.java | 0 .../src/pb/wsclient/EventClassification.java | 0 .../src/pb/wsclient/EventClassifications.java | 0 .../src/pb/wsclient/EventContainer.java | 0 .../src/pb/wsclient/EventId.java | 0 .../src/pb/wsclient/EventIdList.java | 0 .../src/pb/wsclient/EventIdListContainer.java | 0 .../wsclient/EventIdListContainerDeleted.java | 0 .../EventIdListContainerNonQueried.java | 0 .../src/pb/wsclient/EventIdPositionEnum.java | 0 .../src/pb/wsclient/EventIdType.java | 0 .../src/pb/wsclient/EventListContainer.java | 0 .../src/pb/wsclient/EventProperties.java | 0 .../src/pb/wsclient/EventType.java | 0 .../src/pb/wsclient/FeaturesProperties.java | 0 .../GetContiguousListEventsOutput.java | 0 .../GetCustomViewRequestContainer.java | 0 .../GetCustomViewResponseContainer.java | 0 .../pb/wsclient/GetJobRequestContainer.java | 0 .../GetJobsForMediaRequestContainer.java | 0 .../GetListEventChangesAuxXMLOutput.java | 0 .../wsclient/GetListEventChangesOutput.java | 0 .../GetNonContiguousListEventsOutput.java | 0 .../GetScheduledJobRequestContainer.java | 0 ...ScheduledJobsForMediaRequestContainer.java | 0 .../src/pb/wsclient/HealthFlag.java | 0 .../src/pb/wsclient/HealthList.java | 0 .../src/pb/wsclient/Heartbeat.java | 0 .../src/pb/wsclient/HistoryProperties.java | 0 .../src/pb/wsclient/IngestProperties.java | 0 .../src/pb/wsclient/Job.java | 0 .../src/pb/wsclient/JobContainer.java | 0 .../src/pb/wsclient/JobList.java | 0 .../src/pb/wsclient/JobListContainer.java | 0 .../src/pb/wsclient/JobListProperties.java | 0 .../src/pb/wsclient/JobProperties.java | 0 .../src/pb/wsclient/JobState.java | 0 .../JobStateDateTimecodeRangeContainer.java | 0 .../src/pb/wsclient/KeepItem.java | 0 .../src/pb/wsclient/KeepItemProperties.java | 0 .../src/pb/wsclient/KeepList.java | 0 .../src/pb/wsclient/KeepListProperties.java | 0 .../src/pb/wsclient/Languages.java | 0 .../wsclient/LastModifiedDateTimeRange.java | 0 .../LastModifiedDateTimeRangeContainer.java | 0 .../src/pb/wsclient/Layers.java | 0 .../src/pb/wsclient/ListStreamAllocation.java | 0 .../ListStreamAllocationProperties.java | 0 .../src/pb/wsclient/MacroProperties.java | 0 .../src/pb/wsclient/Markup.java | 0 .../src/pb/wsclient/MarkupItem.java | 0 .../src/pb/wsclient/Markups.java | 0 .../src/pb/wsclient/Media.java | 106 +- .../src/pb/wsclient/MediaInstance.java | 0 .../wsclient/MediaInstanceKeyContainer.java | 0 .../src/pb/wsclient/MediaInstanceList.java | 0 .../pb/wsclient/MediaInstanceProperties.java | 0 .../src/pb/wsclient/MediaInstanceUsage.java | 0 .../src/pb/wsclient/MediaKeyContainer.java | 0 .../src/pb/wsclient/MediaList.java | 0 .../src/pb/wsclient/MediaListContainer.java | 0 .../pb/wsclient/MediaMetadataContainer.java | 0 .../src/pb/wsclient/MediaProperties.java | 0 .../wsclient/MediaSegmentationProperites.java | 0 .../src/pb/wsclient/MediaSet.java | 0 .../src/pb/wsclient/MediaSetType.java | 0 .../src/pb/wsclient/MediaSimple.java | 0 .../src/pb/wsclient/MediaSimpleLoose.java | 0 .../wsclient/MediaStreamIngestProperties.java | 0 .../pb/wsclient/MediaStreamProperties.java | 0 .../src/pb/wsclient/MediaType.java | 0 .../src/pb/wsclient/MediaUsage.java | 0 .../src/pb/wsclient/MediaUsageContainer.java | 0 .../src/pb/wsclient/MediaUsageList.java | 0 .../pb/wsclient/MediaUsageListContainer.java | 0 .../wsclient/MediaUsageMediaKeyContainer.java | 0 .../src/pb/wsclient/ObjectFactory.java | 0 .../src/pb/wsclient/ObjectType.java | 0 .../src/pb/wsclient/PBSMarinaAPI.java | 2 +- .../src/pb/wsclient/PBSMarinaAPIService.java | 2 +- .../src/pb/wsclient/PlaylistActionEvent.java | 0 .../PlaylistActionEventEffectProperties.java | 0 .../PlaylistActionEventProperties.java | 0 .../PlaylistEventXMLConfigurableFields.java | 0 .../src/pb/wsclient/PlaylistPrimaryEvent.java | 0 .../pb/wsclient/PlaylistPrimaryEventList.java | 0 .../PlaylistPrimaryEventProperties.java | 0 .../src/pb/wsclient/PlaylistProperties.java | 0 .../pb/wsclient/PlaylistSecondaryEvent.java | 0 .../wsclient/PlaylistSecondaryEventList.java | 0 .../PlaylistSecondaryEventProperties.java | 0 .../wsclient/PrimaryScheduleProperties.java | 0 .../src/pb/wsclient/Priority.java | 0 .../pb/wsclient/RecordSourceProperties.java | 0 .../src/pb/wsclient/RedundancyRole.java | 0 .../src/pb/wsclient/RequestProperties.java | 0 .../pb/wsclient/RestrictionProperties.java | 0 .../src/pb/wsclient/ScheduledJob.java | 0 .../pb/wsclient/ScheduledJobContainer.java | 0 .../src/pb/wsclient/ScheduledJobList.java | 0 .../wsclient/ScheduledJobListContainer.java | 0 .../pb/wsclient/ScheduledJobProperties.java | 0 .../ScheduledJobScheduleProperties.java | 0 ...ledJobStateDateTimecodeRangeContainer.java | 0 .../src/pb/wsclient/Secondaries.java | 0 .../wsclient/SecondaryScheduleProperties.java | 0 .../src/pb/wsclient/SlotEnum.java | 0 .../src/pb/wsclient/StartTimeState.java | 0 .../src/pb/wsclient/State.java | 0 .../src/pb/wsclient/StatusEnum.java | 0 .../src/pb/wsclient/StatusProperties.java | 0 .../src/pb/wsclient/SubtitleCaptionMode.java | 0 .../src/pb/wsclient/SubtitleProperties.java | 0 .../src/pb/wsclient/SwitchAllocation.java | 0 .../src/pb/wsclient/SwitchProperties.java | 0 .../src/pb/wsclient/SwitchRate.java | 0 .../src/pb/wsclient/SwitchTransition.java | 0 .../src/pb/wsclient/System.java | 0 .../src/pb/wsclient/TimecodeProperties.java | 0 .../src/pb/wsclient/Transfer.java | 0 .../src/pb/wsclient/TransferDestination.java | 0 .../src/pb/wsclient/TriggerProperties.java | 0 .../src/pb/wsclient/UsageTypeEnum.java | 0 .../src/pb/wsclient/User.java | 0 .../src/pb/wsclient/UserGroup.java | 0 .../src/pb/wsclient/ValidationMode.java | 0 .../src/pb/wsclient/VideoProperties.java | 0 .../src/pb/wsclient/VpsProperties.java | 0 .../user.peablebeach.api/target/MANIFEST.MF | 13 + .../target/classes/MarinaAPI.wsdl | 1402 +++++ .../target/classes/generate.bat | 4 + .../api/MediaUsageComparator.class | Bin 0 -> 2532 bytes .../api/PBMissingMaterialSrc.class | Bin 0 -> 12586 bytes .../target/classes/import.bat | 5 + .../target/classes/include/MarinaTypes.xsd | 4510 +++++++++++++++++ .../target/classes/jaxb.xml | 36 + .../wsclient/ActionScheduleProperties.class | Bin 0 -> 1216 bytes .../pb/wsclient/AsRunActionEvent.class | Bin 0 -> 1305 bytes .../pb/wsclient/AsRunData$Errors$Error.class | Bin 0 -> 1572 bytes .../pb/wsclient/AsRunData$Errors.class | Bin 0 -> 1006 bytes .../classes/pb/wsclient/AsRunData.class | Bin 0 -> 4737 bytes .../wsclient/AsRunEventTemplate$AsRun.class | Bin 0 -> 899 bytes .../pb/wsclient/AsRunEventTemplate.class | Bin 0 -> 2500 bytes .../classes/pb/wsclient/AsRunJob$AsRun.class | Bin 0 -> 565 bytes .../target/classes/pb/wsclient/AsRunJob.class | Bin 0 -> 2183 bytes .../classes/pb/wsclient/AsRunJobList.class | Bin 0 -> 858 bytes .../wsclient/AsRunJobProperties$Block.class | Bin 0 -> 993 bytes .../pb/wsclient/AsRunJobProperties.class | Bin 0 -> 4294 bytes .../pb/wsclient/AsRunPrimaryEvent.class | Bin 0 -> 1312 bytes .../pb/wsclient/AsRunPrimaryEventList.class | Bin 0 -> 1158 bytes .../pb/wsclient/AsRunSecondaryEvent.class | Bin 0 -> 1326 bytes .../pb/wsclient/AsRunSecondaryEventList.class | Bin 0 -> 1165 bytes .../pb/wsclient/AsRunUserObservation.class | Bin 0 -> 1565 bytes .../pb/wsclient/AspectRatioProperties.class | Bin 0 -> 874 bytes .../pb/wsclient/Audio$Groups$Group$Tags.class | Bin 0 -> 1013 bytes .../Audio$Groups$Group$Tracks$Track.class | Bin 0 -> 1030 bytes .../wsclient/Audio$Groups$Group$Tracks.class | Bin 0 -> 1216 bytes .../pb/wsclient/Audio$Groups$Group.class | Bin 0 -> 1825 bytes .../classes/pb/wsclient/Audio$Groups.class | Bin 0 -> 978 bytes .../Audio$Tracks$Track$EncodingConfig.class | Bin 0 -> 1121 bytes .../pb/wsclient/Audio$Tracks$Track$Tags.class | Bin 0 -> 1013 bytes .../pb/wsclient/Audio$Tracks$Track.class | Bin 0 -> 1781 bytes .../classes/pb/wsclient/Audio$Tracks.class | Bin 0 -> 1052 bytes .../target/classes/pb/wsclient/Audio.class | Bin 0 -> 1253 bytes .../classes/pb/wsclient/AudioTrack.class | Bin 0 -> 2099 bytes .../classes/pb/wsclient/AudioTracks.class | Bin 0 -> 946 bytes .../pb/wsclient/AutomationStateType.class | Bin 0 -> 4041 bytes .../pb/wsclient/CGTransitionEnum.class | Bin 0 -> 1822 bytes .../classes/pb/wsclient/CgProperties$F.class | Bin 0 -> 1184 bytes .../wsclient/CgProperties$PassThrough.class | Bin 0 -> 1003 bytes .../wsclient/CgProperties$StopAnimation.class | Bin 0 -> 1441 bytes .../pb/wsclient/CgProperties$Transition.class | Bin 0 -> 1504 bytes .../classes/pb/wsclient/CgProperties.class | Bin 0 -> 3461 bytes .../classes/pb/wsclient/ChangeCounts.class | Bin 0 -> 1227 bytes .../pb/wsclient/ChannelProperties.class | Bin 0 -> 1692 bytes .../classes/pb/wsclient/Classification.class | Bin 0 -> 1460 bytes .../classes/pb/wsclient/Classifications.class | Bin 0 -> 1068 bytes .../classes/pb/wsclient/Component.class | Bin 0 -> 2313 bytes .../classes/pb/wsclient/ComponentHealth.class | Bin 0 -> 3025 bytes .../classes/pb/wsclient/ComponentList.class | Bin 0 -> 950 bytes .../pb/wsclient/ComponentListContainer.class | Bin 0 -> 1052 bytes .../classes/pb/wsclient/ComponentTag.class | Bin 0 -> 1713 bytes .../pb/wsclient/ComponentTagContainer.class | Bin 0 -> 1104 bytes ...onfig$PlayListEventXML$EnabledFields.class | Bin 0 -> 1155 bytes .../pb/wsclient/Config$PlayListEventXML.class | Bin 0 -> 1134 bytes .../target/classes/pb/wsclient/Config.class | Bin 0 -> 1115 bytes .../classes/pb/wsclient/ConfigContainer.class | Bin 0 -> 984 bytes ...questListContainer$ConfigRequestList.class | Bin 0 -> 1107 bytes .../wsclient/ConfigRequestListContainer.class | Bin 0 -> 1286 bytes .../classes/pb/wsclient/ConfigType.class | Bin 0 -> 1344 bytes .../pb/wsclient/DateTimecodeRange.class | Bin 0 -> 1062 bytes .../wsclient/DateTimecodeRangeContainer.class | Bin 0 -> 1092 bytes .../DeleteMedia$DeleteMediaInstances.class | Bin 0 -> 1096 bytes .../classes/pb/wsclient/DeleteMedia.class | Bin 0 -> 1657 bytes .../pb/wsclient/DeleteMediaInstance.class | Bin 0 -> 1100 bytes .../DeleteMediaInstanceContainer.class | Bin 0 -> 1064 bytes .../DeleteMediaInstanceKeyContainer.class | Bin 0 -> 1040 bytes .../classes/pb/wsclient/Direction.class | Bin 0 -> 1764 bytes .../pb/wsclient/DolphinCGProperties.class | Bin 0 -> 3363 bytes .../DolphinGraphicProperties$Param.class | Bin 0 -> 950 bytes .../wsclient/DolphinGraphicProperties.class | Bin 0 -> 1968 bytes .../wsclient/EffectProperties$AudioClip.class | Bin 0 -> 1868 bytes .../wsclient/EffectProperties$AudioMode.class | Bin 0 -> 1343 bytes .../wsclient/EffectProperties$AudioOver.class | Bin 0 -> 1797 bytes ...roperties$AudioShuffle$Fixed$Shuffle.class | Bin 0 -> 1319 bytes .../EffectProperties$AudioShuffle$Fixed.class | Bin 0 -> 1270 bytes .../EffectProperties$AudioShuffle.class | Bin 0 -> 1995 bytes .../pb/wsclient/EffectProperties$Dve.class | Bin 0 -> 1134 bytes .../pb/wsclient/EffectProperties$Keyer.class | Bin 0 -> 1267 bytes .../pb/wsclient/EffectProperties$Logo.class | Bin 0 -> 1536 bytes .../pb/wsclient/EffectProperties.class | Bin 0 -> 4228 bytes .../pb/wsclient/EventClassification.class | Bin 0 -> 545 bytes .../pb/wsclient/EventClassifications.class | Bin 0 -> 550 bytes .../classes/pb/wsclient/EventContainer.class | Bin 0 -> 1017 bytes .../target/classes/pb/wsclient/EventId.class | Bin 0 -> 1156 bytes .../classes/pb/wsclient/EventIdList.class | Bin 0 -> 1025 bytes .../pb/wsclient/EventIdListContainer.class | Bin 0 -> 1016 bytes .../EventIdListContainerDeleted.class | Bin 0 -> 1065 bytes .../EventIdListContainerNonQueried.class | Bin 0 -> 1077 bytes .../pb/wsclient/EventIdPositionEnum.class | Bin 0 -> 1506 bytes .../classes/pb/wsclient/EventIdType.class | Bin 0 -> 1399 bytes .../pb/wsclient/EventListContainer.class | Bin 0 -> 1057 bytes .../classes/pb/wsclient/EventProperties.class | Bin 0 -> 2198 bytes .../classes/pb/wsclient/EventType.class | Bin 0 -> 2052 bytes ...s$Feature$Properties$FieldList$Field.class | Bin 0 -> 1404 bytes ...perties$Feature$Properties$FieldList.class | Bin 0 -> 1394 bytes ...eaturesProperties$Feature$Properties.class | Bin 0 -> 2959 bytes .../wsclient/FeaturesProperties$Feature.class | Bin 0 -> 1400 bytes .../pb/wsclient/FeaturesProperties.class | Bin 0 -> 1085 bytes .../GetContiguousListEventsOutput.class | Bin 0 -> 1921 bytes ...ViewRequestContainer$MarinaCustomAPI.class | Bin 0 -> 1005 bytes .../GetCustomViewRequestContainer.class | Bin 0 -> 1294 bytes .../GetCustomViewResponseContainer.class | Bin 0 -> 1060 bytes .../pb/wsclient/GetJobRequestContainer.class | Bin 0 -> 992 bytes .../GetJobsForMediaRequestContainer.class | Bin 0 -> 1040 bytes .../GetListEventChangesAuxXMLOutput.class | Bin 0 -> 1981 bytes .../wsclient/GetListEventChangesOutput.class | Bin 0 -> 1351 bytes .../GetNonContiguousListEventsOutput.class | Bin 0 -> 2708 bytes .../GetScheduledJobRequestContainer.class | Bin 0 -> 1055 bytes ...cheduledJobsForMediaRequestContainer.class | Bin 0 -> 1076 bytes .../classes/pb/wsclient/HealthFlag.class | Bin 0 -> 835 bytes .../classes/pb/wsclient/HealthList.class | Bin 0 -> 942 bytes .../pb/wsclient/Heartbeat$AuxXML.class | Bin 0 -> 972 bytes .../classes/pb/wsclient/Heartbeat.class | Bin 0 -> 878 bytes .../wsclient/HistoryProperties$Created.class | Bin 0 -> 1577 bytes .../wsclient/HistoryProperties$Modified.class | Bin 0 -> 1580 bytes .../pb/wsclient/HistoryProperties.class | Bin 0 -> 1726 bytes .../pb/wsclient/IngestProperties.class | Bin 0 -> 1600 bytes .../target/classes/pb/wsclient/Job.class | Bin 0 -> 1650 bytes .../classes/pb/wsclient/JobContainer.class | Bin 0 -> 952 bytes .../target/classes/pb/wsclient/JobList.class | Bin 0 -> 828 bytes .../pb/wsclient/JobListContainer.class | Bin 0 -> 1214 bytes .../pb/wsclient/JobListProperties.class | Bin 0 -> 1189 bytes .../pb/wsclient/JobProperties$Delete.class | Bin 0 -> 1570 bytes .../classes/pb/wsclient/JobProperties.class | Bin 0 -> 2605 bytes .../target/classes/pb/wsclient/JobState.class | Bin 0 -> 1390 bytes .../JobStateDateTimecodeRangeContainer.class | Bin 0 -> 1124 bytes .../target/classes/pb/wsclient/KeepItem.class | Bin 0 -> 1271 bytes .../wsclient/KeepItemProperties$Expiry.class | Bin 0 -> 913 bytes ...s$Media$MediaInstances$MediaInstance.class | Bin 0 -> 2055 bytes ...pItemProperties$Media$MediaInstances.class | Bin 0 -> 1327 bytes .../wsclient/KeepItemProperties$Media.class | Bin 0 -> 1099 bytes .../pb/wsclient/KeepItemProperties.class | Bin 0 -> 1580 bytes .../target/classes/pb/wsclient/KeepList.class | Bin 0 -> 926 bytes .../pb/wsclient/KeepListProperties.class | Bin 0 -> 544 bytes .../classes/pb/wsclient/Languages.class | Bin 0 -> 840 bytes .../wsclient/LastModifiedDateTimeRange.class | Bin 0 -> 1094 bytes .../LastModifiedDateTimeRangeContainer.class | Bin 0 -> 1172 bytes .../target/classes/pb/wsclient/Layers.class | Bin 0 -> 904 bytes .../pb/wsclient/ListStreamAllocation.class | Bin 0 -> 1164 bytes .../ListStreamAllocationProperties.class | Bin 0 -> 1246 bytes .../classes/pb/wsclient/MacroProperties.class | Bin 0 -> 914 bytes .../target/classes/pb/wsclient/Markup.class | Bin 0 -> 1408 bytes .../classes/pb/wsclient/MarkupItem.class | Bin 0 -> 2148 bytes .../target/classes/pb/wsclient/Markups.class | Bin 0 -> 914 bytes .../classes/pb/wsclient/Media$AuxXML.class | Bin 0 -> 1281 bytes .../target/classes/pb/wsclient/Media.class | Bin 0 -> 5066 bytes .../pb/wsclient/MediaInstance$AuxXML.class | Bin 0 -> 998 bytes .../classes/pb/wsclient/MediaInstance.class | Bin 0 -> 5366 bytes .../MediaInstanceKeyContainer$Media.class | Bin 0 -> 1562 bytes .../wsclient/MediaInstanceKeyContainer.class | Bin 0 -> 1182 bytes .../pb/wsclient/MediaInstanceList.class | Bin 0 -> 982 bytes .../pb/wsclient/MediaInstanceProperties.class | Bin 0 -> 1441 bytes .../pb/wsclient/MediaInstanceUsage.class | Bin 0 -> 2898 bytes .../pb/wsclient/MediaKeyContainer.class | Bin 0 -> 984 bytes .../classes/pb/wsclient/MediaList.class | Bin 0 -> 844 bytes .../pb/wsclient/MediaListContainer.class | Bin 0 -> 1234 bytes .../pb/wsclient/MediaMetadataContainer.class | Bin 0 -> 1004 bytes .../classes/pb/wsclient/MediaProperties.class | Bin 0 -> 1126 bytes .../MediaSegmentationProperites$Markup.class | Bin 0 -> 1193 bytes .../MediaSegmentationProperites.class | Bin 0 -> 1683 bytes .../classes/pb/wsclient/MediaSet$AuxXML.class | Bin 0 -> 968 bytes .../target/classes/pb/wsclient/MediaSet.class | Bin 0 -> 6497 bytes .../classes/pb/wsclient/MediaSetType.class | Bin 0 -> 2221 bytes .../classes/pb/wsclient/MediaSimple.class | Bin 0 -> 1151 bytes .../pb/wsclient/MediaSimpleLoose.class | Bin 0 -> 1239 bytes .../MediaStreamIngestProperties.class | Bin 0 -> 975 bytes .../pb/wsclient/MediaStreamProperties.class | Bin 0 -> 2511 bytes .../classes/pb/wsclient/MediaType.class | Bin 0 -> 1915 bytes .../MediaUsage$MediaInstancesUsage.class | Bin 0 -> 1085 bytes .../classes/pb/wsclient/MediaUsage.class | Bin 0 -> 1641 bytes .../pb/wsclient/MediaUsageContainer.class | Bin 0 -> 1022 bytes .../classes/pb/wsclient/MediaUsageList.class | Bin 0 -> 884 bytes .../pb/wsclient/MediaUsageListContainer.class | Bin 0 -> 1062 bytes .../MediaUsageMediaKeyContainer.class | Bin 0 -> 1024 bytes .../classes/pb/wsclient/ObjectFactory.class | Bin 0 -> 44950 bytes .../classes/pb/wsclient/ObjectType.class | Bin 0 -> 4001 bytes .../classes/pb/wsclient/PBSMarinaAPI.class | Bin 0 -> 7747 bytes .../pb/wsclient/PBSMarinaAPIService.class | Bin 0 -> 2812 bytes .../pb/wsclient/PlaylistActionEvent.class | Bin 0 -> 2890 bytes .../PlaylistActionEventEffectProperties.class | Bin 0 -> 966 bytes .../PlaylistActionEventProperties.class | Bin 0 -> 3092 bytes .../PlaylistEventXMLConfigurableFields.class | Bin 0 -> 1668 bytes .../pb/wsclient/PlaylistPrimaryEvent.class | Bin 0 -> 2897 bytes .../wsclient/PlaylistPrimaryEventList.class | Bin 0 -> 1008 bytes ...PlaylistPrimaryEventProperties$Block.class | Bin 0 -> 1041 bytes .../PlaylistPrimaryEventProperties.class | Bin 0 -> 3758 bytes .../pb/wsclient/PlaylistProperties.class | Bin 0 -> 1999 bytes .../pb/wsclient/PlaylistSecondaryEvent.class | Bin 0 -> 2911 bytes .../wsclient/PlaylistSecondaryEventList.class | Bin 0 -> 1155 bytes .../PlaylistSecondaryEventProperties.class | Bin 0 -> 3026 bytes .../wsclient/PrimaryScheduleProperties.class | Bin 0 -> 1112 bytes .../pb/wsclient/Priority$Relative.class | Bin 0 -> 912 bytes .../pb/wsclient/Priority$RequiredTime.class | Bin 0 -> 912 bytes .../target/classes/pb/wsclient/Priority.class | Bin 0 -> 1610 bytes .../RecordSourceProperties$Auto.class | Bin 0 -> 944 bytes .../pb/wsclient/RecordSourceProperties.class | Bin 0 -> 1300 bytes .../classes/pb/wsclient/RedundancyRole.class | Bin 0 -> 1812 bytes .../RequestProperties$MediaLocation.class | Bin 0 -> 1203 bytes .../RequestProperties$Requester.class | Bin 0 -> 2249 bytes .../pb/wsclient/RequestProperties.class | Bin 0 -> 2714 bytes .../pb/wsclient/RestrictionProperties.class | Bin 0 -> 862 bytes .../classes/pb/wsclient/ScheduledJob.class | Bin 0 -> 1713 bytes .../pb/wsclient/ScheduledJobContainer.class | Bin 0 -> 1015 bytes .../pb/wsclient/ScheduledJobList.class | Bin 0 -> 882 bytes .../wsclient/ScheduledJobListContainer.class | Bin 0 -> 1277 bytes ...bProperties$Destination$MediaStreams.class | Bin 0 -> 2897 bytes .../ScheduledJobProperties$Destination.class | Bin 0 -> 1145 bytes ...ledJobProperties$Review$MediaStreams.class | Bin 0 -> 1194 bytes .../ScheduledJobProperties$Review.class | Bin 0 -> 1110 bytes .../ScheduledJobProperties$Source.class | Bin 0 -> 1342 bytes .../pb/wsclient/ScheduledJobProperties.class | Bin 0 -> 2959 bytes .../ScheduledJobScheduleProperties.class | Bin 0 -> 1546 bytes ...edJobStateDateTimecodeRangeContainer.class | Bin 0 -> 1160 bytes .../classes/pb/wsclient/Secondaries.class | Bin 0 -> 856 bytes .../SecondaryScheduleProperties.class | Bin 0 -> 1534 bytes .../target/classes/pb/wsclient/SlotEnum.class | Bin 0 -> 2289 bytes .../classes/pb/wsclient/StartTimeState.class | Bin 0 -> 1500 bytes .../target/classes/pb/wsclient/State.class | Bin 0 -> 1396 bytes .../classes/pb/wsclient/StatusEnum.class | Bin 0 -> 1770 bytes .../pb/wsclient/StatusProperties.class | Bin 0 -> 2725 bytes .../pb/wsclient/SubtitleCaptionMode.class | Bin 0 -> 2022 bytes .../wsclient/SubtitleProperties$AuxXML.class | Bin 0 -> 1018 bytes .../pb/wsclient/SubtitleProperties.class | Bin 0 -> 2167 bytes .../pb/wsclient/SwitchAllocation$Auto.class | Bin 0 -> 920 bytes .../pb/wsclient/SwitchAllocation$Fixed.class | Bin 0 -> 1133 bytes .../wsclient/SwitchAllocation$Logical.class | Bin 0 -> 922 bytes .../pb/wsclient/SwitchAllocation.class | Bin 0 -> 2000 bytes .../pb/wsclient/SwitchProperties.class | Bin 0 -> 2373 bytes .../classes/pb/wsclient/SwitchRate.class | Bin 0 -> 2135 bytes .../pb/wsclient/SwitchTransition.class | Bin 0 -> 2918 bytes .../target/classes/pb/wsclient/System.class | Bin 0 -> 1065 bytes .../pb/wsclient/TimecodeProperties.class | Bin 0 -> 1088 bytes .../target/classes/pb/wsclient/Transfer.class | Bin 0 -> 1269 bytes .../pb/wsclient/TransferDestination.class | Bin 0 -> 1339 bytes .../pb/wsclient/TriggerProperties$Fixed.class | Bin 0 -> 1667 bytes .../pb/wsclient/TriggerProperties$Macro.class | Bin 0 -> 920 bytes .../pb/wsclient/TriggerProperties.class | Bin 0 -> 1638 bytes .../classes/pb/wsclient/UsageTypeEnum.class | Bin 0 -> 2742 bytes .../classes/pb/wsclient/User$AuxXML.class | Bin 0 -> 952 bytes .../target/classes/pb/wsclient/User.class | Bin 0 -> 2542 bytes .../pb/wsclient/UserGroup$AuxXML.class | Bin 0 -> 972 bytes .../classes/pb/wsclient/UserGroup.class | Bin 0 -> 1236 bytes .../classes/pb/wsclient/ValidationMode.class | Bin 0 -> 1894 bytes .../classes/pb/wsclient/VideoProperties.class | Bin 0 -> 2058 bytes .../classes/pb/wsclient/VpsProperties.class | Bin 0 -> 1957 bytes .../target/local-artifacts.properties | 4 + .../target/maven-archiver/pom.properties | 5 + .../target/p2artifacts.xml | 13 + .../user.peablebeach.api/target/p2content.xml | 35 + .../target/user.peablebeach.api_1.0.0.jar | Bin 0 -> 260728 bytes .../user.tsm.client/apilib/libtsmapi-1.1.so | Bin 0 -> 139156 bytes ...oy.launch => build-user-tsm-client.launch} | 0 .../user/tsm/client/TSMBufferedClient.java | 8 +- 585 files changed, 9958 insertions(+), 697 deletions(-) rename client/Maestro/Configuration/{ACTIVE-configuration-promo.json => -ACTIVE-configuration-promo.json} (100%) create mode 100644 client/Maestro/Resources/outline_filter_1_black_24dp.png create mode 100644 client/Maestro/Resources/outline_flip_black_24dp.png create mode 100644 server/-configuration/AMC/soap/getCustomView create mode 100644 server/-configuration/AMC/soap/getMediaUsageByUTRange delete mode 100644 server/user.jobengine.executors/src/user/jobengine/server/steps/ForkByStatusFileStep.java create mode 100644 server/user.jobengine.executors/src/user/jobengine/server/steps/ForkDownloadStep.java create mode 100644 server/user.jobengine.executors/src/user/jobengine/server/steps/ForkUploadStep.java create mode 100644 server/user.jobengine.executors/src/user/jobengine/server/steps/PBQuery.java create mode 100644 server/user.jobengine.executors/src/user/jobengine/server/steps/RegisterUserRestoreStep.java rename server/user.jobengine.osgi.commons/{deploy.launch => build-user-jobengine-osgi-commons.launch} (100%) delete mode 100644 server/user.jobengine.osgi.commons/src/pb/wsclient/PBClientTest.java create mode 100644 server/user.jobengine.osgi.db/migrations/scripts/009_add_related_to_job.sql create mode 100644 server/user.jobengine.osgi.db/migrations/scripts/010_add_lookup_related.sql create mode 100644 server/user.jobengine.osgi.server/pages/access-denied.zul create mode 100644 server/user.jobengine.osgi.server/pages/alternate_retrievebatchselector.zul create mode 100644 server/user.jobengine.osgi.server/pages/pwdgen.zul create mode 100644 server/user.jobengine.osgi.server/src/user/jobengine/zk/model/AlternateRetrieveBatchSelectorModel.java create mode 100644 server/user.jobengine.osgi.server/src/user/jobengine/zk/model/PwdGenModel.java create mode 100644 server/user.peablebeach.api/.classpath create mode 100644 server/user.peablebeach.api/.project create mode 100644 server/user.peablebeach.api/.settings/org.eclipse.core.resources.prefs create mode 100644 server/user.peablebeach.api/.settings/org.eclipse.jdt.core.prefs create mode 100644 server/user.peablebeach.api/.settings/org.eclipse.m2e.core.prefs create mode 100644 server/user.peablebeach.api/.settings/org.eclipse.pde.core.prefs create mode 100644 server/user.peablebeach.api/.settings/org.jboss.ide.eclipse.as.core.prefs create mode 100644 server/user.peablebeach.api/META-INF/MANIFEST.MF create mode 100644 server/user.peablebeach.api/build-user-peablebeach-api.launch create mode 100644 server/user.peablebeach.api/build.properties create mode 100644 server/user.peablebeach.api/libs/pb_asm-5.2.jar create mode 100644 server/user.peablebeach.api/libs/pb_cxf-core-3.2.7.jar create mode 100644 server/user.peablebeach.api/libs/pb_cxf-rt-bindings-soap-3.2.7.jar create mode 100644 server/user.peablebeach.api/libs/pb_cxf-rt-bindings-xml-3.2.7.jar create mode 100644 server/user.peablebeach.api/libs/pb_cxf-rt-databinding-jaxb-3.2.7.jar create mode 100644 server/user.peablebeach.api/libs/pb_cxf-rt-frontend-jaxws-3.2.7.jar create mode 100644 server/user.peablebeach.api/libs/pb_cxf-rt-frontend-simple-3.2.7.jar create mode 100644 server/user.peablebeach.api/libs/pb_cxf-rt-transports-http-3.2.7.jar create mode 100644 server/user.peablebeach.api/libs/pb_cxf-rt-ws-addr-3.2.7.jar create mode 100644 server/user.peablebeach.api/libs/pb_cxf-rt-ws-policy-3.2.7.jar create mode 100644 server/user.peablebeach.api/libs/pb_cxf-rt-wsdl-3.2.7.jar create mode 100644 server/user.peablebeach.api/libs/pb_geronimo-javamail_1.4_mail-1.8.4.jar create mode 100644 server/user.peablebeach.api/libs/pb_jaxb-core-2.2.11.jar create mode 100644 server/user.peablebeach.api/libs/pb_jaxb-impl-2.2.11.jar create mode 100644 server/user.peablebeach.api/libs/pb_jaxb-xjc-2.2.11.jar create mode 100644 server/user.peablebeach.api/libs/pb_jcl-over-slf4j-1.7.25.jar create mode 100644 server/user.peablebeach.api/libs/pb_neethi-3.1.1.jar create mode 100644 server/user.peablebeach.api/libs/pb_slf4j-api-1.7.25.jar create mode 100644 server/user.peablebeach.api/libs/pb_slf4j-jdk14-1.7.25.jar create mode 100644 server/user.peablebeach.api/libs/pb_stax2-api-3.1.4.jar create mode 100644 server/user.peablebeach.api/libs/pb_woodstox-core-5.0.3.jar create mode 100644 server/user.peablebeach.api/libs/pb_wsdl4j-1.6.3.jar create mode 100644 server/user.peablebeach.api/libs/pb_xml-resolver-1.2.jar create mode 100644 server/user.peablebeach.api/libs/pb_xmlschema-core-2.2.3.jar create mode 100644 server/user.peablebeach.api/pom.xml create mode 100644 server/user.peablebeach.api/src/MarinaAPI.wsdl create mode 100644 server/user.peablebeach.api/src/generate.bat create mode 100644 server/user.peablebeach.api/src/hu/user/peablebeach/api/MediaUsageComparator.java create mode 100644 server/user.peablebeach.api/src/hu/user/peablebeach/api/PBMissingMaterialSrc.java create mode 100644 server/user.peablebeach.api/src/import.bat rename server/{user.jobengine.osgi.commons/src/user/commons/peablebeach => user.peablebeach.api/src}/include/MarinaTypes.xsd (100%) create mode 100644 server/user.peablebeach.api/src/jaxb.xml rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/ActionScheduleProperties.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/AsRunActionEvent.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/AsRunData.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/AsRunEventTemplate.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/AsRunJob.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/AsRunJobList.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/AsRunJobProperties.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/AsRunPrimaryEvent.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/AsRunPrimaryEventList.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/AsRunSecondaryEvent.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/AsRunSecondaryEventList.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/AsRunUserObservation.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/AspectRatioProperties.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/Audio.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/AudioTrack.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/AudioTracks.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/AutomationStateType.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/CGTransitionEnum.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/CgProperties.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/ChangeCounts.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/ChannelProperties.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/Classification.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/Classifications.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/Component.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/ComponentHealth.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/ComponentList.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/ComponentListContainer.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/ComponentTag.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/ComponentTagContainer.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/Config.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/ConfigContainer.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/ConfigRequestListContainer.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/ConfigType.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/DateTimecodeRange.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/DateTimecodeRangeContainer.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/DeleteMedia.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/DeleteMediaInstance.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/DeleteMediaInstanceContainer.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/DeleteMediaInstanceKeyContainer.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/Direction.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/DolphinCGProperties.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/DolphinGraphicProperties.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/EffectProperties.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/EventClassification.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/EventClassifications.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/EventContainer.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/EventId.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/EventIdList.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/EventIdListContainer.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/EventIdListContainerDeleted.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/EventIdListContainerNonQueried.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/EventIdPositionEnum.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/EventIdType.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/EventListContainer.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/EventProperties.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/EventType.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/FeaturesProperties.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/GetContiguousListEventsOutput.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/GetCustomViewRequestContainer.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/GetCustomViewResponseContainer.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/GetJobRequestContainer.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/GetJobsForMediaRequestContainer.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/GetListEventChangesAuxXMLOutput.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/GetListEventChangesOutput.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/GetNonContiguousListEventsOutput.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/GetScheduledJobRequestContainer.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/GetScheduledJobsForMediaRequestContainer.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/HealthFlag.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/HealthList.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/Heartbeat.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/HistoryProperties.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/IngestProperties.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/Job.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/JobContainer.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/JobList.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/JobListContainer.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/JobListProperties.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/JobProperties.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/JobState.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/JobStateDateTimecodeRangeContainer.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/KeepItem.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/KeepItemProperties.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/KeepList.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/KeepListProperties.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/Languages.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/LastModifiedDateTimeRange.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/LastModifiedDateTimeRangeContainer.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/Layers.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/ListStreamAllocation.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/ListStreamAllocationProperties.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/MacroProperties.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/Markup.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/MarkupItem.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/Markups.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/Media.java (96%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/MediaInstance.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/MediaInstanceKeyContainer.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/MediaInstanceList.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/MediaInstanceProperties.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/MediaInstanceUsage.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/MediaKeyContainer.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/MediaList.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/MediaListContainer.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/MediaMetadataContainer.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/MediaProperties.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/MediaSegmentationProperites.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/MediaSet.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/MediaSetType.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/MediaSimple.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/MediaSimpleLoose.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/MediaStreamIngestProperties.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/MediaStreamProperties.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/MediaType.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/MediaUsage.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/MediaUsageContainer.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/MediaUsageList.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/MediaUsageListContainer.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/MediaUsageMediaKeyContainer.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/ObjectFactory.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/ObjectType.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/PBSMarinaAPI.java (97%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/PBSMarinaAPIService.java (95%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/PlaylistActionEvent.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/PlaylistActionEventEffectProperties.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/PlaylistActionEventProperties.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/PlaylistEventXMLConfigurableFields.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/PlaylistPrimaryEvent.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/PlaylistPrimaryEventList.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/PlaylistPrimaryEventProperties.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/PlaylistProperties.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/PlaylistSecondaryEvent.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/PlaylistSecondaryEventList.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/PlaylistSecondaryEventProperties.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/PrimaryScheduleProperties.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/Priority.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/RecordSourceProperties.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/RedundancyRole.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/RequestProperties.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/RestrictionProperties.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/ScheduledJob.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/ScheduledJobContainer.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/ScheduledJobList.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/ScheduledJobListContainer.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/ScheduledJobProperties.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/ScheduledJobScheduleProperties.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/ScheduledJobStateDateTimecodeRangeContainer.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/Secondaries.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/SecondaryScheduleProperties.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/SlotEnum.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/StartTimeState.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/State.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/StatusEnum.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/StatusProperties.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/SubtitleCaptionMode.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/SubtitleProperties.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/SwitchAllocation.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/SwitchProperties.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/SwitchRate.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/SwitchTransition.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/System.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/TimecodeProperties.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/Transfer.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/TransferDestination.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/TriggerProperties.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/UsageTypeEnum.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/User.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/UserGroup.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/ValidationMode.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/VideoProperties.java (100%) rename server/{user.jobengine.osgi.commons => user.peablebeach.api}/src/pb/wsclient/VpsProperties.java (100%) create mode 100644 server/user.peablebeach.api/target/MANIFEST.MF create mode 100644 server/user.peablebeach.api/target/classes/MarinaAPI.wsdl create mode 100644 server/user.peablebeach.api/target/classes/generate.bat create mode 100644 server/user.peablebeach.api/target/classes/hu/user/peablebeach/api/MediaUsageComparator.class create mode 100644 server/user.peablebeach.api/target/classes/hu/user/peablebeach/api/PBMissingMaterialSrc.class create mode 100644 server/user.peablebeach.api/target/classes/import.bat create mode 100644 server/user.peablebeach.api/target/classes/include/MarinaTypes.xsd create mode 100644 server/user.peablebeach.api/target/classes/jaxb.xml create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/ActionScheduleProperties.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/AsRunActionEvent.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/AsRunData$Errors$Error.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/AsRunData$Errors.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/AsRunData.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/AsRunEventTemplate$AsRun.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/AsRunEventTemplate.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/AsRunJob$AsRun.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/AsRunJob.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/AsRunJobList.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/AsRunJobProperties$Block.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/AsRunJobProperties.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/AsRunPrimaryEvent.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/AsRunPrimaryEventList.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/AsRunSecondaryEvent.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/AsRunSecondaryEventList.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/AsRunUserObservation.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/AspectRatioProperties.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/Audio$Groups$Group$Tags.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/Audio$Groups$Group$Tracks$Track.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/Audio$Groups$Group$Tracks.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/Audio$Groups$Group.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/Audio$Groups.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/Audio$Tracks$Track$EncodingConfig.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/Audio$Tracks$Track$Tags.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/Audio$Tracks$Track.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/Audio$Tracks.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/Audio.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/AudioTrack.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/AudioTracks.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/AutomationStateType.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/CGTransitionEnum.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/CgProperties$F.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/CgProperties$PassThrough.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/CgProperties$StopAnimation.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/CgProperties$Transition.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/CgProperties.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/ChangeCounts.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/ChannelProperties.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/Classification.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/Classifications.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/Component.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/ComponentHealth.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/ComponentList.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/ComponentListContainer.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/ComponentTag.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/ComponentTagContainer.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/Config$PlayListEventXML$EnabledFields.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/Config$PlayListEventXML.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/Config.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/ConfigContainer.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/ConfigRequestListContainer$ConfigRequestList.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/ConfigRequestListContainer.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/ConfigType.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/DateTimecodeRange.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/DateTimecodeRangeContainer.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/DeleteMedia$DeleteMediaInstances.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/DeleteMedia.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/DeleteMediaInstance.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/DeleteMediaInstanceContainer.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/DeleteMediaInstanceKeyContainer.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/Direction.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/DolphinCGProperties.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/DolphinGraphicProperties$Param.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/DolphinGraphicProperties.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/EffectProperties$AudioClip.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/EffectProperties$AudioMode.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/EffectProperties$AudioOver.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/EffectProperties$AudioShuffle$Fixed$Shuffle.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/EffectProperties$AudioShuffle$Fixed.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/EffectProperties$AudioShuffle.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/EffectProperties$Dve.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/EffectProperties$Keyer.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/EffectProperties$Logo.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/EffectProperties.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/EventClassification.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/EventClassifications.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/EventContainer.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/EventId.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/EventIdList.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/EventIdListContainer.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/EventIdListContainerDeleted.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/EventIdListContainerNonQueried.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/EventIdPositionEnum.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/EventIdType.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/EventListContainer.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/EventProperties.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/EventType.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/FeaturesProperties$Feature$Properties$FieldList$Field.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/FeaturesProperties$Feature$Properties$FieldList.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/FeaturesProperties$Feature$Properties.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/FeaturesProperties$Feature.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/FeaturesProperties.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/GetContiguousListEventsOutput.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/GetCustomViewRequestContainer$MarinaCustomAPI.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/GetCustomViewRequestContainer.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/GetCustomViewResponseContainer.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/GetJobRequestContainer.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/GetJobsForMediaRequestContainer.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/GetListEventChangesAuxXMLOutput.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/GetListEventChangesOutput.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/GetNonContiguousListEventsOutput.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/GetScheduledJobRequestContainer.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/GetScheduledJobsForMediaRequestContainer.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/HealthFlag.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/HealthList.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/Heartbeat$AuxXML.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/Heartbeat.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/HistoryProperties$Created.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/HistoryProperties$Modified.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/HistoryProperties.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/IngestProperties.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/Job.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/JobContainer.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/JobList.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/JobListContainer.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/JobListProperties.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/JobProperties$Delete.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/JobProperties.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/JobState.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/JobStateDateTimecodeRangeContainer.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/KeepItem.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/KeepItemProperties$Expiry.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/KeepItemProperties$Media$MediaInstances$MediaInstance.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/KeepItemProperties$Media$MediaInstances.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/KeepItemProperties$Media.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/KeepItemProperties.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/KeepList.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/KeepListProperties.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/Languages.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/LastModifiedDateTimeRange.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/LastModifiedDateTimeRangeContainer.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/Layers.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/ListStreamAllocation.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/ListStreamAllocationProperties.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/MacroProperties.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/Markup.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/MarkupItem.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/Markups.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/Media$AuxXML.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/Media.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/MediaInstance$AuxXML.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/MediaInstance.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/MediaInstanceKeyContainer$Media.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/MediaInstanceKeyContainer.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/MediaInstanceList.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/MediaInstanceProperties.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/MediaInstanceUsage.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/MediaKeyContainer.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/MediaList.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/MediaListContainer.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/MediaMetadataContainer.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/MediaProperties.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/MediaSegmentationProperites$Markup.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/MediaSegmentationProperites.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/MediaSet$AuxXML.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/MediaSet.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/MediaSetType.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/MediaSimple.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/MediaSimpleLoose.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/MediaStreamIngestProperties.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/MediaStreamProperties.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/MediaType.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/MediaUsage$MediaInstancesUsage.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/MediaUsage.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/MediaUsageContainer.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/MediaUsageList.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/MediaUsageListContainer.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/MediaUsageMediaKeyContainer.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/ObjectFactory.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/ObjectType.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/PBSMarinaAPI.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/PBSMarinaAPIService.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/PlaylistActionEvent.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/PlaylistActionEventEffectProperties.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/PlaylistActionEventProperties.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/PlaylistEventXMLConfigurableFields.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/PlaylistPrimaryEvent.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/PlaylistPrimaryEventList.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/PlaylistPrimaryEventProperties$Block.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/PlaylistPrimaryEventProperties.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/PlaylistProperties.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/PlaylistSecondaryEvent.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/PlaylistSecondaryEventList.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/PlaylistSecondaryEventProperties.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/PrimaryScheduleProperties.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/Priority$Relative.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/Priority$RequiredTime.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/Priority.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/RecordSourceProperties$Auto.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/RecordSourceProperties.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/RedundancyRole.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/RequestProperties$MediaLocation.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/RequestProperties$Requester.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/RequestProperties.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/RestrictionProperties.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/ScheduledJob.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/ScheduledJobContainer.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/ScheduledJobList.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/ScheduledJobListContainer.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/ScheduledJobProperties$Destination$MediaStreams.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/ScheduledJobProperties$Destination.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/ScheduledJobProperties$Review$MediaStreams.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/ScheduledJobProperties$Review.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/ScheduledJobProperties$Source.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/ScheduledJobProperties.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/ScheduledJobScheduleProperties.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/ScheduledJobStateDateTimecodeRangeContainer.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/Secondaries.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/SecondaryScheduleProperties.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/SlotEnum.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/StartTimeState.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/State.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/StatusEnum.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/StatusProperties.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/SubtitleCaptionMode.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/SubtitleProperties$AuxXML.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/SubtitleProperties.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/SwitchAllocation$Auto.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/SwitchAllocation$Fixed.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/SwitchAllocation$Logical.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/SwitchAllocation.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/SwitchProperties.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/SwitchRate.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/SwitchTransition.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/System.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/TimecodeProperties.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/Transfer.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/TransferDestination.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/TriggerProperties$Fixed.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/TriggerProperties$Macro.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/TriggerProperties.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/UsageTypeEnum.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/User$AuxXML.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/User.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/UserGroup$AuxXML.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/UserGroup.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/ValidationMode.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/VideoProperties.class create mode 100644 server/user.peablebeach.api/target/classes/pb/wsclient/VpsProperties.class create mode 100644 server/user.peablebeach.api/target/local-artifacts.properties create mode 100644 server/user.peablebeach.api/target/maven-archiver/pom.properties create mode 100644 server/user.peablebeach.api/target/p2artifacts.xml create mode 100644 server/user.peablebeach.api/target/p2content.xml create mode 100644 server/user.peablebeach.api/target/user.peablebeach.api_1.0.0.jar create mode 100644 server/user.tsm.client/apilib/libtsmapi-1.1.so rename server/user.tsm.client/{deploy.launch => build-user-tsm-client.launch} (100%) diff --git a/client/AudioRecorder/MetadataSelectorForm.cs b/client/AudioRecorder/MetadataSelectorForm.cs index 85acb573..09396f89 100644 --- a/client/AudioRecorder/MetadataSelectorForm.cs +++ b/client/AudioRecorder/MetadataSelectorForm.cs @@ -83,7 +83,7 @@ namespace AudioRecorder { }; } - private void TrafficIDChangedEvent(string id, int variantID, string text, List selected) { + private void TrafficIDChangedEvent(string id, int variantID, string epizodeID, string text, List selected) { if (id == null) SelectedMetadata = null; else { diff --git a/client/DxPlay/PlayerForm.cs b/client/DxPlay/PlayerForm.cs index fa9be0e0..d1189cb1 100644 --- a/client/DxPlay/PlayerForm.cs +++ b/client/DxPlay/PlayerForm.cs @@ -86,7 +86,7 @@ namespace DxPlay { } - private void OnSelectedIDChanged(string ID, int variantID, string text, List selected) { + private void OnSelectedIDChanged(string ID, int variantID, string epizodeID, string text, List selected) { //logger.Info("Selected ID: " + ID); try { model.SelectedSegments = selected; diff --git a/client/Maestro/Configuration/ACTIVE-configuration-promo.json b/client/Maestro/Configuration/-ACTIVE-configuration-promo.json similarity index 100% rename from client/Maestro/Configuration/ACTIVE-configuration-promo.json rename to client/Maestro/Configuration/-ACTIVE-configuration-promo.json diff --git a/client/Maestro/Configuration/configuration.json b/client/Maestro/Configuration/configuration.json index 03c635ad..dca817fc 100644 --- a/client/Maestro/Configuration/configuration.json +++ b/client/Maestro/Configuration/configuration.json @@ -1,6 +1,6 @@ { "title": "Development", - "active": true, + "active": false, "startInTray": false, "enableCustomMetadataId": true, "filter": "avi", diff --git a/client/Maestro/Configuration/editor-mv.json b/client/Maestro/Configuration/editor-mv.json index ee67c186..6a1fcb20 100644 --- a/client/Maestro/Configuration/editor-mv.json +++ b/client/Maestro/Configuration/editor-mv.json @@ -1,6 +1,6 @@ { "title": "Editor", - "active": false, + "active": true, "startInTray": false, "enableCustomMetadataId": true, "player": { diff --git a/client/Maestro/Maestro.csproj b/client/Maestro/Maestro.csproj index 612aa9a6..758236f3 100644 --- a/client/Maestro/Maestro.csproj +++ b/client/Maestro/Maestro.csproj @@ -288,7 +288,7 @@ Form - + Always @@ -405,6 +405,8 @@ + + diff --git a/client/Maestro/MaestroForm.Designer.cs b/client/Maestro/MaestroForm.Designer.cs index e5c7a737..536a5b2a 100644 --- a/client/Maestro/MaestroForm.Designer.cs +++ b/client/Maestro/MaestroForm.Designer.cs @@ -26,17 +26,17 @@ namespace Maestro { /// private void InitializeComponent() { this.components = new System.ComponentModel.Container(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle31 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle32 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle33 = new System.Windows.Forms.DataGridViewCellStyle(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MaestroForm)); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle6 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle7 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle5 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle9 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle10 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle8 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle36 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle37 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle34 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle35 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle39 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle40 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle38 = new System.Windows.Forms.DataGridViewCellStyle(); this.groupSource = new System.Windows.Forms.GroupBox(); this.dgSource = new System.Windows.Forms.DataGridView(); this.bindingSource = new System.Windows.Forms.BindingSource(this.components); @@ -66,6 +66,7 @@ namespace Maestro { this.btnRedefineSegments = new System.Windows.Forms.ToolStripButton(); this.btnEditMetadata = new System.Windows.Forms.ToolStripButton(); this.btnDefineSegments = new System.Windows.Forms.ToolStripButton(); + this.btnUseEpisodeID = new System.Windows.Forms.ToolStripButton(); this.btnLookupMetadata = new System.Windows.Forms.Button(); this.labelSelectedMetadata = new System.Windows.Forms.Label(); this.textSelectedMetadata = new System.Windows.Forms.TextBox(); @@ -116,6 +117,7 @@ namespace Maestro { this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); this.lSkipped = new System.Windows.Forms.ToolStripLabel(); this.lSkippedCount = new System.Windows.Forms.ToolStripLabel(); + this.dataGridViewProgressColumn1 = new Maestro.Commons.DataGridViewProgressColumn(); this.systemMessageBindingSource = new System.Windows.Forms.BindingSource(this.components); this.metadataInfoBindingSource = new System.Windows.Forms.BindingSource(this.components); this.groupSource.SuspendLayout(); @@ -188,32 +190,32 @@ namespace Maestro { this.dgSource.BackgroundColor = System.Drawing.Color.White; this.dgSource.BorderStyle = System.Windows.Forms.BorderStyle.None; this.dgSource.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.Raised; - dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; - dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Control; - dataGridViewCellStyle1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); - dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.WindowText; - dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight; - dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.True; - this.dgSource.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1; + dataGridViewCellStyle31.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle31.BackColor = System.Drawing.SystemColors.Control; + dataGridViewCellStyle31.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + dataGridViewCellStyle31.ForeColor = System.Drawing.SystemColors.WindowText; + dataGridViewCellStyle31.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle31.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle31.WrapMode = System.Windows.Forms.DataGridViewTriState.True; + this.dgSource.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle31; this.dgSource.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; this.dgSource.DataSource = this.bindingSource; - dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; - dataGridViewCellStyle2.BackColor = System.Drawing.SystemColors.Window; - dataGridViewCellStyle2.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); - dataGridViewCellStyle2.ForeColor = System.Drawing.SystemColors.ControlText; - dataGridViewCellStyle2.SelectionBackColor = System.Drawing.Color.Gainsboro; - dataGridViewCellStyle2.SelectionForeColor = System.Drawing.Color.Black; - dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.False; - this.dgSource.DefaultCellStyle = dataGridViewCellStyle2; + dataGridViewCellStyle32.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle32.BackColor = System.Drawing.SystemColors.Window; + dataGridViewCellStyle32.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + dataGridViewCellStyle32.ForeColor = System.Drawing.SystemColors.ControlText; + dataGridViewCellStyle32.SelectionBackColor = System.Drawing.Color.Gainsboro; + dataGridViewCellStyle32.SelectionForeColor = System.Drawing.Color.Black; + dataGridViewCellStyle32.WrapMode = System.Windows.Forms.DataGridViewTriState.False; + this.dgSource.DefaultCellStyle = dataGridViewCellStyle32; this.dgSource.Dock = System.Windows.Forms.DockStyle.Fill; this.dgSource.EditMode = System.Windows.Forms.DataGridViewEditMode.EditProgrammatically; this.dgSource.EnableHeadersVisualStyles = false; this.dgSource.Location = new System.Drawing.Point(10, 47); this.dgSource.Name = "dgSource"; this.dgSource.RowHeadersVisible = false; - dataGridViewCellStyle3.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); - this.dgSource.RowsDefaultCellStyle = dataGridViewCellStyle3; + dataGridViewCellStyle33.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.dgSource.RowsDefaultCellStyle = dataGridViewCellStyle33; this.dgSource.RowTemplate.DefaultCellStyle.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); this.dgSource.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; this.dgSource.Size = new System.Drawing.Size(330, 163); @@ -521,6 +523,7 @@ namespace Maestro { this.trafficIDSelector.Location = new System.Drawing.Point(3, 3); this.trafficIDSelector.Margin = new System.Windows.Forms.Padding(0); this.trafficIDSelector.Name = "trafficIDSelector"; + this.trafficIDSelector.Parameters = null; this.trafficIDSelector.Size = new System.Drawing.Size(316, 314); this.trafficIDSelector.TabIndex = 0; // @@ -551,7 +554,8 @@ namespace Maestro { this.tsMetadata.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.btnRedefineSegments, this.btnEditMetadata, - this.btnDefineSegments}); + this.btnDefineSegments, + this.btnUseEpisodeID}); this.tsMetadata.LayoutStyle = System.Windows.Forms.ToolStripLayoutStyle.Flow; this.tsMetadata.Location = new System.Drawing.Point(0, 0); this.tsMetadata.Name = "tsMetadata"; @@ -597,6 +601,18 @@ namespace Maestro { this.btnDefineSegments.ToolTipText = "Szegmensek"; this.btnDefineSegments.Click += new System.EventHandler(this.OnDefineSegments); // + // btnUseEpisodeID + // + this.btnUseEpisodeID.CheckOnClick = true; + this.btnUseEpisodeID.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.btnUseEpisodeID.Image = global::Maestro.Properties.Resources.outline_flip_black_24dp; + this.btnUseEpisodeID.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None; + this.btnUseEpisodeID.ImageTransparentColor = System.Drawing.Color.Magenta; + this.btnUseEpisodeID.Name = "btnUseEpisodeID"; + this.btnUseEpisodeID.Size = new System.Drawing.Size(28, 28); + this.btnUseEpisodeID.Text = "toolStripButton1"; + this.btnUseEpisodeID.ToolTipText = "Epizód kijelölés"; + // // btnLookupMetadata // this.btnLookupMetadata.BackColor = System.Drawing.Color.Transparent; @@ -778,15 +794,15 @@ namespace Maestro { this.columnKillDate, this.columnMessage}); this.dgJobs.DataSource = this.bindingSourceJobs; - dataGridViewCellStyle6.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; - dataGridViewCellStyle6.BackColor = System.Drawing.SystemColors.Window; - dataGridViewCellStyle6.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); - dataGridViewCellStyle6.ForeColor = System.Drawing.SystemColors.ControlText; - dataGridViewCellStyle6.NullValue = null; - dataGridViewCellStyle6.SelectionBackColor = System.Drawing.Color.Gainsboro; - dataGridViewCellStyle6.SelectionForeColor = System.Drawing.Color.Black; - dataGridViewCellStyle6.WrapMode = System.Windows.Forms.DataGridViewTriState.False; - this.dgJobs.DefaultCellStyle = dataGridViewCellStyle6; + dataGridViewCellStyle36.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle36.BackColor = System.Drawing.SystemColors.Window; + dataGridViewCellStyle36.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + dataGridViewCellStyle36.ForeColor = System.Drawing.SystemColors.ControlText; + dataGridViewCellStyle36.NullValue = null; + dataGridViewCellStyle36.SelectionBackColor = System.Drawing.Color.Gainsboro; + dataGridViewCellStyle36.SelectionForeColor = System.Drawing.Color.Black; + dataGridViewCellStyle36.WrapMode = System.Windows.Forms.DataGridViewTriState.False; + this.dgJobs.DefaultCellStyle = dataGridViewCellStyle36; this.dgJobs.Dock = System.Windows.Forms.DockStyle.Fill; this.dgJobs.EditMode = System.Windows.Forms.DataGridViewEditMode.EditProgrammatically; this.dgJobs.EnableHeadersVisualStyles = false; @@ -794,8 +810,8 @@ namespace Maestro { this.dgJobs.Location = new System.Drawing.Point(3, 3); this.dgJobs.Name = "dgJobs"; this.dgJobs.RowHeadersVisible = false; - dataGridViewCellStyle7.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); - this.dgJobs.RowsDefaultCellStyle = dataGridViewCellStyle7; + dataGridViewCellStyle37.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.dgJobs.RowsDefaultCellStyle = dataGridViewCellStyle37; this.dgJobs.RowTemplate.DefaultCellStyle.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); this.dgJobs.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; this.dgJobs.Size = new System.Drawing.Size(988, 96); @@ -832,8 +848,8 @@ namespace Maestro { // columnID // this.columnID.DataPropertyName = "ID"; - dataGridViewCellStyle4.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); - this.columnID.DefaultCellStyle = dataGridViewCellStyle4; + dataGridViewCellStyle34.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.columnID.DefaultCellStyle = dataGridViewCellStyle34; this.columnID.HeaderText = "ID"; this.columnID.Name = "columnID"; this.columnID.Width = 44; @@ -841,8 +857,8 @@ namespace Maestro { // columnStatus // this.columnStatus.DataPropertyName = "Status"; - dataGridViewCellStyle5.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); - this.columnStatus.DefaultCellStyle = dataGridViewCellStyle5; + dataGridViewCellStyle35.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.columnStatus.DefaultCellStyle = dataGridViewCellStyle35; this.columnStatus.HeaderText = "Status"; this.columnStatus.Name = "columnStatus"; this.columnStatus.Width = 66; @@ -912,15 +928,15 @@ namespace Maestro { this.dgMessages.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { this.columnMessagesTime, this.columnMessagesMessage}); - dataGridViewCellStyle9.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; - dataGridViewCellStyle9.BackColor = System.Drawing.SystemColors.Window; - dataGridViewCellStyle9.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); - dataGridViewCellStyle9.ForeColor = System.Drawing.Color.Red; - dataGridViewCellStyle9.NullValue = null; - dataGridViewCellStyle9.SelectionBackColor = System.Drawing.Color.Gainsboro; - dataGridViewCellStyle9.SelectionForeColor = System.Drawing.Color.Red; - dataGridViewCellStyle9.WrapMode = System.Windows.Forms.DataGridViewTriState.False; - this.dgMessages.DefaultCellStyle = dataGridViewCellStyle9; + dataGridViewCellStyle39.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle39.BackColor = System.Drawing.SystemColors.Window; + dataGridViewCellStyle39.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + dataGridViewCellStyle39.ForeColor = System.Drawing.Color.Red; + dataGridViewCellStyle39.NullValue = null; + dataGridViewCellStyle39.SelectionBackColor = System.Drawing.Color.Gainsboro; + dataGridViewCellStyle39.SelectionForeColor = System.Drawing.Color.Red; + dataGridViewCellStyle39.WrapMode = System.Windows.Forms.DataGridViewTriState.False; + this.dgMessages.DefaultCellStyle = dataGridViewCellStyle39; this.dgMessages.Dock = System.Windows.Forms.DockStyle.Fill; this.dgMessages.EditMode = System.Windows.Forms.DataGridViewEditMode.EditProgrammatically; this.dgMessages.EnableHeadersVisualStyles = false; @@ -929,8 +945,8 @@ namespace Maestro { this.dgMessages.Name = "dgMessages"; this.dgMessages.ReadOnly = true; this.dgMessages.RowHeadersVisible = false; - dataGridViewCellStyle10.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); - this.dgMessages.RowsDefaultCellStyle = dataGridViewCellStyle10; + dataGridViewCellStyle40.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.dgMessages.RowsDefaultCellStyle = dataGridViewCellStyle40; this.dgMessages.RowTemplate.DefaultCellStyle.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); this.dgMessages.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; this.dgMessages.Size = new System.Drawing.Size(988, 96); @@ -949,8 +965,8 @@ namespace Maestro { // this.columnMessagesMessage.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; this.columnMessagesMessage.DataPropertyName = "Message"; - dataGridViewCellStyle8.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); - this.columnMessagesMessage.DefaultCellStyle = dataGridViewCellStyle8; + dataGridViewCellStyle38.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.columnMessagesMessage.DefaultCellStyle = dataGridViewCellStyle38; this.columnMessagesMessage.HeaderText = "Üzenet"; this.columnMessagesMessage.Name = "columnMessagesMessage"; this.columnMessagesMessage.ReadOnly = true; @@ -1135,6 +1151,15 @@ namespace Maestro { this.lSkippedCount.Text = "0"; this.lSkippedCount.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; // + // dataGridViewProgressColumn1 + // + this.dataGridViewProgressColumn1.DataPropertyName = "Progress"; + this.dataGridViewProgressColumn1.Frozen = true; + this.dataGridViewProgressColumn1.HeaderText = ""; + this.dataGridViewProgressColumn1.MinimumWidth = 100; + this.dataGridViewProgressColumn1.Name = "dataGridViewProgressColumn1"; + this.dataGridViewProgressColumn1.Resizable = System.Windows.Forms.DataGridViewTriState.False; + // // systemMessageBindingSource // this.systemMessageBindingSource.DataSource = typeof(Maestro.SystemMessage); @@ -1291,6 +1316,8 @@ namespace Maestro { private ToolStripSeparator toolStripSeparator7; private ToolStripLabel lRevoked; private ToolStripLabel lRevokedCount; + private ToolStripButton btnUseEpisodeID; + private Commons.DataGridViewProgressColumn dataGridViewProgressColumn1; } } diff --git a/client/Maestro/MaestroForm.Metadata.cs b/client/Maestro/MaestroForm.Metadata.cs index 9c4ec3b5..5e76f505 100644 --- a/client/Maestro/MaestroForm.Metadata.cs +++ b/client/Maestro/MaestroForm.Metadata.cs @@ -411,7 +411,7 @@ namespace Maestro { }; } - private void OnTrafficIDSelected(string id, int variantID, string text, List selected) { + private void OnTrafficIDSelected(string id, int variantID, string epizodeID, string text, List selected) { btnRedefineSegments.Visible = false; if (id == null) { ArchiveMetadata = null; @@ -422,7 +422,7 @@ namespace Maestro { MetadataType metadataType = MetadataTypeUtil.Guess(id); SelectedMetadata = new MetadataInfo() { Kind = metadataType, - ID = id, + ID = btnUseEpisodeID.Checked ? epizodeID : id, MetadataText = text, VariantID = variantID, Selected = selected diff --git a/client/Maestro/MaestroForm.resx b/client/Maestro/MaestroForm.resx index ffa61412..a37bd163 100644 --- a/client/Maestro/MaestroForm.resx +++ b/client/Maestro/MaestroForm.resx @@ -128,7 +128,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAS - CAAAAk1TRnQBSQFMAgEBAgEAAZgBAgGYAQIBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + CAAAAk1TRnQBSQFMAgEBAgEAAcABAgHAAQIBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA @@ -177,9 +177,15 @@ 951, 17 + + 951, 17 + 846, 17 + + 1146, 17 + True diff --git a/client/Maestro/Properties/AssemblyInfo.cs b/client/Maestro/Properties/AssemblyInfo.cs index 38eabe36..6940efac 100644 --- a/client/Maestro/Properties/AssemblyInfo.cs +++ b/client/Maestro/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("2.1.0.5")] -[assembly: AssemblyFileVersion("2.1.0.5")] +[assembly: AssemblyVersion("2.1.0.6")] +[assembly: AssemblyFileVersion("2.1.0.6")] diff --git a/client/Maestro/Properties/Resources.Designer.cs b/client/Maestro/Properties/Resources.Designer.cs index 765cc214..85193ba7 100644 --- a/client/Maestro/Properties/Resources.Designer.cs +++ b/client/Maestro/Properties/Resources.Designer.cs @@ -19,7 +19,7 @@ namespace Maestro.Properties { // class via a tool like ResGen or Visual Studio. // To add or remove a member, edit your .ResX file then rerun ResGen // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] internal class Resources { @@ -250,6 +250,26 @@ namespace Maestro.Properties { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap outline_filter_1_black_24dp { + get { + object obj = ResourceManager.GetObject("outline_filter_1_black_24dp", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap outline_flip_black_24dp { + get { + object obj = ResourceManager.GetObject("outline_flip_black_24dp", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon). /// diff --git a/client/Maestro/Properties/Resources.resx b/client/Maestro/Properties/Resources.resx index f2783a5a..3d711bd4 100644 --- a/client/Maestro/Properties/Resources.resx +++ b/client/Maestro/Properties/Resources.resx @@ -118,26 +118,32 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - ..\Resources\mediacube_logo_small.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\ic_settings_black_24dp_1x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\ic_clear_black_24dp_1x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\ic_playlist_add_check_black_24dp_1x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\ic_playlist_add_check_black_24dp_1x_green1.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\Play.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\ic_search_black_24dp_1x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\ic_receipt_black_24dp_1x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\ic_playlist_add_check_black_24dp_1x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\ic_reorder_black_24dp_1x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\mediacube_logo_v2_half_hard_edge.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\ic_folder_open_black_24dp_1x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\ic_clear_black_24dp_1x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\ic_toc_black_24dp_1x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\ic_list_black_24dp_1x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -145,37 +151,37 @@ ..\Resources\ic_note_add_black_24dp_1x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\ic_playlist_add_check_black_24dp_1x_green1.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\ic_receipt_black_24dp_1x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\ic_cached_black_18dp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\ic_receipt_black_24dp_1x_green.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\ic_reorder_black_24dp_1x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\outline_filter_1_black_24dp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\ic_settings_black_24dp_1x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\ic_playlist_add_black_24dp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\ic_subject_black_24dp_1x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\ic_folder_open_black_24dp_1x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\ic_toc_black_24dp_1x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\ic_search_black_24dp_1x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\ic_view_headline_black_24dp_1x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\mediacube_logo_small.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\ic_subject_black_24dp_1x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\ic_refresh_black_24dp_1x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\ic_cached_black_18dp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\ic_view_headline_black_24dp_1x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\ic_playlist_add_black_24dp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\outline_flip_black_24dp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a \ No newline at end of file diff --git a/client/Maestro/Resources/outline_filter_1_black_24dp.png b/client/Maestro/Resources/outline_filter_1_black_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..374b406454cce5d0183f27e21e0553d0406755e4 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0y~yV2}V|4mJh`h6m-gKNuJo5fc9}_w`B$VvQ7TPl~_%d8=cyQ#*PX-1C22WQ%mvv4F FO#r$7G$H^1 literal 0 HcmV?d00001 diff --git a/client/Maestro/Resources/outline_flip_black_24dp.png b/client/Maestro/Resources/outline_flip_black_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..ff5c3f84ad7a1fa601fde27650defc6e1b99913c GIT binary patch literal 144 zcmeAS@N?(olHy`uVBq!ia0y~yV2}V|4mJh`h6m-gKNuJo!aZFaLn;`PC2}6vbMR+z z=QLERT|UkoC?uMCKh tKbGETe?n-Jj>8poGv{4?%j_8#Uj8Y&u+w76CI$uu22WQ%mvv4FO#pyaEAapT literal 0 HcmV?d00001 diff --git a/client/MetadataSelector/MetadataIDSelector.cs b/client/MetadataSelector/MetadataIDSelector.cs index ec0048d9..737cbd6d 100644 --- a/client/MetadataSelector/MetadataIDSelector.cs +++ b/client/MetadataSelector/MetadataIDSelector.cs @@ -141,7 +141,7 @@ namespace MaestroShared.Controls { textSelectedMetadata.Text = name; } - private void TrafficIDChangedEvent(string id, int variantID, string text, List selected) { + private void TrafficIDChangedEvent(string id, int variantID, string epizodeID, string text, List selected) { octopusIDSelector.ClearSelection(); nativeOctopusIDSelector.ClearSelection(); ClearFreeMetadata(); diff --git a/client/PlanAIRClient/TrafficIDSelector.cs b/client/PlanAIRClient/TrafficIDSelector.cs index 15697f5f..9cc0cef2 100644 --- a/client/PlanAIRClient/TrafficIDSelector.cs +++ b/client/PlanAIRClient/TrafficIDSelector.cs @@ -11,7 +11,7 @@ using System.Text.RegularExpressions; using System.Windows.Forms; namespace TrafficClient { - public delegate void OnSelectedIDChanged(string ID, int variantID, string text, List selected); + public delegate void OnSelectedIDChanged(string ID, int variantID, string epizodeID, string text, List selected); public partial class TrafficIDSelector : UserControl { public ITrafficAPI trafficAPI { get; private set; } @@ -182,10 +182,10 @@ namespace TrafficClient { if (selectedItems?.Count > 0) { btnNewVersion.Enabled = true; CreateVersionIfMissing(trafficItem); - IDChangedEvent?.Invoke(trafficItem.MediaID, trafficItem.VariantID, trafficItem.Title, selectedItems); + IDChangedEvent?.Invoke(trafficItem.MediaID, trafficItem.VariantID, trafficItem.EpisodeID, trafficItem.Title, selectedItems); } else { btnNewVersion.Enabled = false; - IDChangedEvent?.Invoke(null, 0, null, null); + IDChangedEvent?.Invoke(null, 0, null, null, null); } } diff --git a/server/-configuration/AMC/soap/getCustomView b/server/-configuration/AMC/soap/getCustomView new file mode 100644 index 00000000..0a65d8ea --- /dev/null +++ b/server/-configuration/AMC/soap/getCustomView @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/server/-configuration/AMC/soap/getMediaUsageByUTRange b/server/-configuration/AMC/soap/getMediaUsageByUTRange new file mode 100644 index 00000000..511580c1 --- /dev/null +++ b/server/-configuration/AMC/soap/getMediaUsageByUTRange @@ -0,0 +1,10 @@ + + + + + + + false + true + + \ No newline at end of file diff --git a/server/-configuration/mediacube.json b/server/-configuration/mediacube.json index bd927894..733e5b30 100644 --- a/server/-configuration/mediacube.json +++ b/server/-configuration/mediacube.json @@ -108,12 +108,12 @@ }, { "user" : "lebony", - "password" : "lebony", + "password" : "4E25B117B14D86D7DCECB4E433CF932C", "email" : null }, { "user" : "root", - "password" : "password", + "password" : "5F4DCC3B5AA765D61D8327DEB882CF99", "email" : "vasary@elgekko.net" } ], diff --git a/server/-configuration/run-mediacube-server-mv.launch b/server/-configuration/run-mediacube-server-mv.launch index f7f6d9f0..ebcd1ff6 100644 --- a/server/-configuration/run-mediacube-server-mv.launch +++ b/server/-configuration/run-mediacube-server-mv.launch @@ -19,7 +19,7 @@ - + diff --git a/server/-configuration/run-mediacube-server-user.launch b/server/-configuration/run-mediacube-server-user.launch index 2d084b11..283e43d3 100644 --- a/server/-configuration/run-mediacube-server-user.launch +++ b/server/-configuration/run-mediacube-server-user.launch @@ -19,7 +19,7 @@ - + diff --git a/server/-configuration/run-mediacube-server.launch b/server/-configuration/run-mediacube-server.launch index 1698aedc..d8603cff 100644 --- a/server/-configuration/run-mediacube-server.launch +++ b/server/-configuration/run-mediacube-server.launch @@ -21,7 +21,7 @@ - + diff --git a/server/hu.user.mediacube.executors.tests/src/hu/user/mediacube/executors/tests/SmallTests.java b/server/hu.user.mediacube.executors.tests/src/hu/user/mediacube/executors/tests/SmallTests.java index 4959df0d..93f0294c 100644 --- a/server/hu.user.mediacube.executors.tests/src/hu/user/mediacube/executors/tests/SmallTests.java +++ b/server/hu.user.mediacube.executors.tests/src/hu/user/mediacube/executors/tests/SmallTests.java @@ -1,9 +1,14 @@ package hu.user.mediacube.executors.tests; import java.io.File; +import java.nio.file.DirectoryStream; import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.TreeMap; import org.apache.commons.io.FilenameUtils; import org.junit.Test; @@ -40,11 +45,28 @@ public class SmallTests { System.out.println(Arrays.toString(sut)); } + @Test + public void test10() throws Exception { + List files = new ArrayList<>(); + DirectoryStream directoryStream = Files.newDirectoryStream(Paths.get("/_video")); + for (Path file : directoryStream) { + if (!file.toFile().isDirectory()) + files.add(file); + } + files.sort((p1, p2) -> { + if (p1.toFile().lastModified() == p2.toFile().lastModified()) + return 0; + return p1.toFile().lastModified() > p2.toFile().lastModified() ? 1 : -1; + }); + + for (Path file : files) + System.out.println(file); + } + @Test public void test2() throws Exception { Integer i = 5; Boolean j = Boolean.FALSE; - xxx(i, j); } @Test @@ -83,8 +105,59 @@ public class SmallTests { } - void xxx(int x, boolean y) { - System.out.println("call"); + @Test + public void test6() throws Exception { + TreeMap sut = new TreeMap<>(); + + sut.put("20200301T10:00:00", ""); + sut.put("20200101T12:00:00", ""); + sut.put("20200101T10:00:00", ""); + sut.put("20200201T00:00:00", ""); + + for (String key : sut.keySet()) { + System.out.println(key); + } + + String name = "valammi.mxf"; + System.out.println(name.substring(0, name.lastIndexOf("."))); + + boolean create = false; + create |= false; + System.out.println(create); + + } + + @Test + public void test7() throws Exception { + DirectoryStream directoryStream = Files.newDirectoryStream(Paths.get("/opt")); + int count = 0; + for (Path path : directoryStream) { + count++; + } + System.out.println(count); + for (Path path : directoryStream) { + System.out.println(path); + } + } + + @Test + public void test8() throws Exception { + + int currentCount = 11; + int allCount = 90; + System.out.println(currentCount * 100 / allCount); + } + + @Test + public void test9() throws Exception { + List files = Arrays.asList(Paths.get("/opt/20200101100000.xxx.json"), Paths.get("/opt/xxx.json"), Paths.get("/opt/yyy.json"), + Paths.get("/opt/20200202200000.xxx.json")); + + files.sort((a, b) -> { + return a.compareTo(b); + }); + for (Path file : files) + System.out.println(file); } } diff --git a/server/user.jobengine.executors/config/config.xml b/server/user.jobengine.executors/config/config.xml index 6f70a96d..5bf0dd2e 100644 --- a/server/user.jobengine.executors/config/config.xml +++ b/server/user.jobengine.executors/config/config.xml @@ -2,10 +2,10 @@ - + - + diff --git a/server/user.jobengine.executors/jobtemplates/cancelable.xml b/server/user.jobengine.executors/jobtemplates/cancelable.xml index 37185de7..f7b501c5 100644 --- a/server/user.jobengine.executors/jobtemplates/cancelable.xml +++ b/server/user.jobengine.executors/jobtemplates/cancelable.xml @@ -1,6 +1,17 @@ + + + + + - + + + + + + + \ No newline at end of file diff --git a/server/user.jobengine.executors/jobtemplates/fork-validate-and-archive.xml b/server/user.jobengine.executors/jobtemplates/fork-validate-and-archive.xml index d4461a87..0195aa57 100644 --- a/server/user.jobengine.executors/jobtemplates/fork-validate-and-archive.xml +++ b/server/user.jobengine.executors/jobtemplates/fork-validate-and-archive.xml @@ -3,25 +3,17 @@ - - - + - - - - - - diff --git a/server/user.jobengine.executors/jobtemplates/fork-validate-and-restore.xml b/server/user.jobengine.executors/jobtemplates/fork-validate-and-restore.xml index 63d2cb22..cc52684f 100644 --- a/server/user.jobengine.executors/jobtemplates/fork-validate-and-restore.xml +++ b/server/user.jobengine.executors/jobtemplates/fork-validate-and-restore.xml @@ -3,25 +3,17 @@ - - - + - - - - - - diff --git a/server/user.jobengine.executors/jobtemplates/peablebeach-missingmaterial-checker.xml b/server/user.jobengine.executors/jobtemplates/peablebeach-missingmaterial-checker.xml index f1fae0b8..b7cf9495 100644 --- a/server/user.jobengine.executors/jobtemplates/peablebeach-missingmaterial-checker.xml +++ b/server/user.jobengine.executors/jobtemplates/peablebeach-missingmaterial-checker.xml @@ -4,6 +4,7 @@ + @@ -21,6 +22,9 @@ + + + diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/CancelableStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/CancelableStep.java index 10c9ddd9..db37b4ca 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/CancelableStep.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/CancelableStep.java @@ -13,7 +13,7 @@ public class CancelableStep extends JobStep { private ObjectMapper mapper = ServiceObjectMapper.getMapper(); @StepEntry - public Object[] execute() throws Exception { + public Object[] execute(int param) throws Exception { // DownloadableArchive a = new DownloadableArchive(); // Media media = getManager().createMedia("Generic", "Name", "description", "houseId"); @@ -25,12 +25,16 @@ public class CancelableStep extends JobStep { // String prettyString = mapper.writeValueAsString(a); // DownloadableArchive b = mapper.readValue(prettyString, DownloadableArchive.class); // Media media2 = b.getMedia(); + + // getJobRuntime().setDescription(String.valueOf(param)); + try { for (int i = 0; i < count; i++) { if (getJobRuntime().isWaitingCancel()) break; - Thread.sleep(1000); - setProgress((i + 1) * count); + Thread.sleep(500); + int progress = (i + 1) * 100 / count; + setProgress(progress); // if (i == 5) // throw new Exception("Test"); } diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/EscortFiles.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/EscortFiles.java index 5c7a0251..7d7a76b1 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/EscortFiles.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/EscortFiles.java @@ -39,6 +39,7 @@ import user.commons.StoreUri; import user.commons.remotestore.FtpDirectoryLister; public class EscortFiles { + public static final String DOT_CATCHED = ".catched"; public static final String DOT_JSON = ".json"; private static final Logger logger = LogManager.getLogger(); private static final String EXTENDEDAGENCY = "ExtendedAgency"; @@ -68,6 +69,15 @@ public class EscortFiles { return String.format(KILLDATE_FILENAME, fileName, composeKillDate(days)); } + public static void createCatchedFile(Path escortFile) throws IOException { + Path catchedFilePath = Paths.get(escortFile.toString() + DOT_CATCHED); + Files.createFile(catchedFilePath); + } + + public static void createFellow(String escortFile, String extension) throws IOException { + Files.copy(Paths.get(escortFile), Paths.get(escortFile + "." + extension)); + } + public static void createMetadata(String filePath, String fileName, String metadata) throws IOException { ensureUNCFolder(filePath, STATUSFOLDER); String metadataFileName = fileName + DOT_JSON; @@ -174,6 +184,11 @@ public class EscortFiles { ensureUNCFolder(statusPath); } + public static boolean isCatchedFileExists(Path escortFile) { + Path catchedFilePath = Paths.get(escortFile.toString() + DOT_CATCHED); + return catchedFilePath.toFile().exists(); + } + public static boolean isMetadataExists(String filePath, String fileName) throws IOException { boolean result = false; String metadataFileName = fileName + DOT_JSON; @@ -182,6 +197,18 @@ public class EscortFiles { return result; } + public static void remove(Path file) { + try { + file.toFile().delete(); + } catch (Exception e) { + logger.error("Unable to delete {}", file.toAbsolutePath().toString()); + } + } + + public static void removeCatchedFile(Path escortFile) { + remove(Paths.get(escortFile.toString() + DOT_CATCHED)); + } + public static void setNEXIOKillDate(int killDateDays, String targetFileName, String nexioAgency, StoreUri targetUri) throws Exception { OutputStream outStream = null; try { @@ -207,8 +234,4 @@ public class EscortFiles { targetUri.cleanUp(); } } - - public static void createFellow(String escortFile, String extension) throws IOException { - Files.copy(Paths.get(escortFile), Paths.get(escortFile + "." + extension)); - } } diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/FileCleanupStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/FileCleanupStep.java index 7fc3440a..c5387649 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/FileCleanupStep.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/FileCleanupStep.java @@ -24,10 +24,8 @@ public class FileCleanupStep extends JobStep { try { Path filePath = Paths.get(sourceStoreUri.toString(true), fileName); deleteSilently(filePath); - if (escortFile != null) { - Path escortFilePath = Paths.get(escortFile); - deleteSilently(escortFilePath); - } + deleteSilently(Paths.get(escortFile)); + deleteSilently(Paths.get(escortFile + EscortFiles.DOT_CATCHED)); } catch (Exception e) { logger.error(e.getMessage()); throw e; diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/FileValidatorStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/FileValidatorStep.java index fc17afb5..fee9abe2 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/FileValidatorStep.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/FileValidatorStep.java @@ -15,6 +15,7 @@ import user.commons.remotestore.RemoteStoreProtocol; public class FileValidatorStep extends JobStep { private static final String COLORSPACE = "COLORSPACE"; private static final Logger logger = LogManager.getLogger(); + private static final String testSimulate = System.getProperty("test.simulate"); private void deleteSilently(Path file) { try { @@ -33,13 +34,28 @@ public class FileValidatorStep extends JobStep { if (!filePath.toFile().exists()) throw new FileNotFoundException("File not exists: " + filePath.toString()); + if (getJobRuntime().isWaitingCancel()) { + deleteSilently(filePath); + deleteSilently(Paths.get(escortFile)); + deleteSilently(Paths.get(escortFile + EscortFiles.DOT_CATCHED)); + cancel(); + return null; + } + if (expectedFrameNumber > 0 || StringUtils.isNotBlank(exceptedColorSpace)) validateMedia(filePath, expectedFrameNumber, exceptedColorSpace, escortFile); if (expectedSize > 0) validateSize(filePath, expectedSize, escortFile); - logger.info(getMarker(), "{} passed validation", fileName); + //A metadata persister miatt torlunk mindet teszt modban + if (StringUtils.isNotBlank(testSimulate)) { + deleteSilently(Paths.get(escortFile)); + deleteSilently(Paths.get(escortFile + EscortFiles.DOT_CATCHED)); + logger.info(getSessionMarker(), "{} deleted to prevent real processing", escortFile); + } + + logger.info(getSessionMarker(), "{} passed validation", fileName); return null; } @@ -53,10 +69,8 @@ public class FileValidatorStep extends JobStep { long frames = mi.getFrames(); if (frames != expectedFrameNumber) { deleteSilently(filePath); - if (escortFile != null) { - Path escortFilePath = Paths.get(escortFile); - deleteSilently(escortFilePath); - } + deleteSilently(Paths.get(escortFile)); + deleteSilently(Paths.get(escortFile + EscortFiles.DOT_CATCHED)); throw new Exception("Length mismatch in " + filePath + ". Expected: " + expectedFrameNumber + ", found: " + frames); } } diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/ForkByStatusFileStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/ForkByStatusFileStep.java deleted file mode 100644 index c9858b96..00000000 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/ForkByStatusFileStep.java +++ /dev/null @@ -1,121 +0,0 @@ -package user.jobengine.server.steps; - -import java.io.IOException; -import java.nio.file.DirectoryStream; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.HashMap; -import java.util.Map; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import org.apache.logging.log4j.message.Message; -import org.apache.logging.log4j.message.ParameterizedMessage; - -import user.commons.DownloadableMedia; -import user.commons.StoreUri; -import user.commons.remotestore.RemoteStoreProtocol; -import user.jobengine.server.IJobRuntime; - -public class ForkByStatusFileStep extends JobStep { - private static final Logger logger = LogManager.getLogger(); - - @StepEntry - public Object[] execute(String tempStoreName, String targetStoreName, String targetProtocol, String template, String expectedColorSpace, int limit) - throws Exception { - DirectoryStream directoryStream = null; - int count = limit; - try { - StoreUri tempStoreUri = getManager().getStoreUri(tempStoreName, RemoteStoreProtocol.LOCAL); - StoreUri targetStoreUri = getManager().getStoreUri(targetStoreName, Enum.valueOf(RemoteStoreProtocol.class, targetProtocol)); - - if (getJobRuntime().forkPrepare()) { - Path path = Paths.get(tempStoreUri.toString(true), ".STATUS"); - directoryStream = Files.newDirectoryStream(path); - if (directoryStream != null) { - for (Path escortFile : directoryStream) { - - if (getJobRuntime().isWaitingCancel()) { - cancel(); - break; - } - - if (processPathItem(tempStoreUri, targetStoreUri, template, escortFile)) - count--; - - if (count == 0) - break; - } - } - if (count == limit) - getJobRuntime().cancelForkPrepare(); - else - getJobRuntime().forkWaitComplete(); - } - - setProgress(100); - } catch (Exception e) { - logger.error(getSessionMarker(), e.getMessage()); - throw e; - } finally { - if (directoryStream != null) { - try { - directoryStream.close(); - } catch (IOException e) { - } - } - } - - return null; - } - - private boolean processPathItem(StoreUri tempStoreUri, StoreUri targetStoreUri, String template, Path escortFile) throws IOException { - if (escortFile.toFile().isDirectory()) - return false; - - //ami nem JSON azt nem kezeljuk - if (!escortFile.getFileName().toString().toLowerCase().endsWith(EscortFiles.DOT_JSON)) - return false; - - //aminek van COLORSPACE kiterjesztésű - Path colorspaceFile = Paths.get(escortFile.toString() + ".colorspace"); - if (colorspaceFile.toFile().exists()) - return false; - - String fileName = escortFile.getFileName().toString(); - //minimum 3 karakter: STORENAME.FILENAME.MXF.JSON - long dotCount = fileName.chars().filter(ch -> ch == '.').count(); - if (dotCount < 3) - return false; - - try { - DownloadableMedia downloadable = EscortFiles.decode(escortFile); - logger.info("Starting {}", template); - - StoreUri sourceStoreUri = getManager().getStoreUri(downloadable.getLong("storeUriId")); - - Map parameters = new HashMap<>(); - parameters.put("sourceStoreUri", sourceStoreUri); - parameters.put("fileName", downloadable.getString("fileName")); - parameters.put("tempStoreUri", tempStoreUri); - parameters.put("targetStoreUri", targetStoreUri); - parameters.put("expectedFrameNumber", downloadable.getLong("frames")); - parameters.put("expectedSize", downloadable.getLong("size")); - parameters.put("expectedColorSpace", downloadable.getString("colorSpace")); - parameters.put("escortFile", escortFile.toAbsolutePath().toString()); - - IJobRuntime child = getEngine().submit(getJobRuntime(), null, template, "Archiválás", parameters); - if (child == null) - throw new Exception("Submit error."); - - } catch (Exception e) { - Message m = new ParameterizedMessage(e.getMessage()); - logger.error(getMarker(), m, e); - logger.error(getSessionMarker(), m); - return false; - } - - return true; - } -} diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/ForkDownloadStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/ForkDownloadStep.java new file mode 100644 index 00000000..8be4b846 --- /dev/null +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/ForkDownloadStep.java @@ -0,0 +1,143 @@ +package user.jobengine.server.steps; + +import java.io.IOException; +import java.nio.file.DirectoryStream; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import user.commons.DownloadableMedia; +import user.commons.JobStatus; +import user.commons.StoreUri; +import user.commons.remotestore.RemoteStoreProtocol; +import user.jobengine.server.IJobEngine; +import user.jobengine.server.IJobRuntime; + +public class ForkDownloadStep extends JobStep { + private static final Logger logger = LogManager.getLogger(); + + @StepEntry + public Object[] execute(String tempStoreName, String template, String expectedColorSpace, int limit) throws Exception { + DirectoryStream directoryStream = null; + int count = limit; + int allCount = 0; + int currentCount = 0; + + try { + StoreUri tempStoreUri = getManager().getStoreUri(tempStoreName, RemoteStoreProtocol.LOCAL); + Path path = Paths.get(tempStoreUri.toString(true), ".STATUS"); + + List escortFiles = new ArrayList<>(); + directoryStream = Files.newDirectoryStream(path); + for (Path escortFile : directoryStream) { + if (getJobRuntime().isWaitingCancel()) { + cancel(); + return null; + } + escortFiles.add(escortFile); + } + allCount = escortFiles.size(); + //a file neve az adasbakerules idopontjaval kezdodik + escortFiles.sort((p1, p2) -> { + if (p1.toFile().lastModified() == p2.toFile().lastModified()) + return 0; + return p1.toFile().lastModified() > p2.toFile().lastModified() ? 1 : -1; + }); + + if (allCount > 0) { + for (Path escortFile : escortFiles) { + if (getJobRuntime().isWaitingCancel()) { + cancel(); + break; + } + + if (processPathItem(tempStoreUri, template, escortFile)) { + count--; + if (count == 0) + break; + } + currentCount++; + setProgress(currentCount * 100 / allCount); + } + } + + setProgress(100); + } catch (Exception e) { + logger.error(getSessionMarker(), e.getMessage()); + throw e; + } finally { + if (directoryStream != null) { + try { + directoryStream.close(); + } catch (IOException e) { + } + } + } + + return null; + } + + private boolean processPathItem(StoreUri tempStoreUri, String template, Path escortFile) throws IOException { + if (escortFile.toFile().isDirectory()) + return false; + + //ami nem JSON azt nem kezeljuk + if (!escortFile.getFileName().toString().toLowerCase().endsWith(EscortFiles.DOT_JSON)) + return false; + + //aminek van COLORSPACE kiterjesztesu valtozata azt nem kezeljuk + // Path colorspaceFile = Paths.get(escortFile.toString() + ".colorspace"); + // if (colorspaceFile.toFile().exists()) + // return false; + + if (EscortFiles.isCatchedFileExists(escortFile)) + return false; + + String fileName = escortFile.getFileName().toString(); + //minimum 3 karakter: STORENAME.FILENAME.MXF.JSON + long dotCount = fileName.chars().filter(ch -> ch == '.').count(); + if (dotCount < 3) + return false; + + try { + DownloadableMedia downloadable = EscortFiles.decode(escortFile); + logger.info("Starting {}", template); + + StoreUri sourceStoreUri = getManager().getStoreUri(downloadable.getLong("sourceStoreUriId")); + StoreUri targetStoreUri = getManager().getStoreUri(downloadable.getLong("targetStoreUriId")); + Map parameters = new HashMap<>(); + parameters.put("sourceStoreUri", sourceStoreUri); + parameters.put("fileName", downloadable.getString("fileName")); + parameters.put("tempStoreUri", tempStoreUri); + parameters.put("targetStoreUri", targetStoreUri); + parameters.put("expectedFrameNumber", downloadable.getLong("frames")); + parameters.put("expectedSize", downloadable.getLong("size")); + parameters.put("expectedColorSpace", downloadable.getString("colorSpace")); + parameters.put("escortFile", escortFile.toAbsolutePath().toString()); + + //IJobRuntime parent, String template, String name, int priority, Map parameters + IJobRuntime child = getEngine().submit(null, e -> { + if (e.getStatus().equals(JobStatus.CANCELED) || e.getStatus().equals(JobStatus.SUSPENDED)) + EscortFiles.removeCatchedFile(escortFile); + }, template, "Archiválás", 0, IJobEngine.DEFAULT_OWNER, parameters); + if (child == null) + throw new Exception("Submit error."); + + child.setRelated(downloadable.getString("title")); + EscortFiles.createCatchedFile(escortFile); + + } catch (Exception e) { + logger.error(getSessionMarker(), e.getMessage()); + return false; + } + + return true; + } +} diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/ForkUploadStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/ForkUploadStep.java new file mode 100644 index 00000000..ede48c76 --- /dev/null +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/ForkUploadStep.java @@ -0,0 +1,142 @@ +package user.jobengine.server.steps; + +import java.io.IOException; +import java.nio.file.DirectoryStream; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import user.commons.DownloadableMedia; +import user.commons.JobStatus; +import user.commons.StoreUri; +import user.commons.remotestore.RemoteStoreProtocol; +import user.jobengine.server.IJobEngine; +import user.jobengine.server.IJobRuntime; + +public class ForkUploadStep extends JobStep { + private static final Logger logger = LogManager.getLogger(); + + @StepEntry + public Object[] execute(String tempStoreName, String template, String expectedColorSpace, int limit) throws Exception { + DirectoryStream directoryStream = null; + int count = limit; + int allCount = 0; + int currentCount = 0; + + try { + StoreUri tempStoreUri = getManager().getStoreUri(tempStoreName, RemoteStoreProtocol.LOCAL); + Path path = Paths.get(tempStoreUri.toString(true), ".STATUS"); + + List escortFiles = new ArrayList<>(); + directoryStream = Files.newDirectoryStream(path); + for (Path escortFile : directoryStream) { + if (getJobRuntime().isWaitingCancel()) { + cancel(); + return null; + } + escortFiles.add(escortFile); + } + allCount = escortFiles.size(); + //a file neve az adasbakerules idopontjaval kezdodik + escortFiles.sort((p1, p2) -> { + return p1.compareTo(p2); + }); + + if (allCount > 0) { + for (Path escortFile : escortFiles) { + if (getJobRuntime().isWaitingCancel()) { + cancel(); + break; + } + + if (processPathItem(tempStoreUri, template, escortFile)) { + count--; + if (count == 0) + break; + } + currentCount++; + setProgress(currentCount * 100 / allCount); + } + } + + setProgress(100); + } catch (Exception e) { + logger.error(getSessionMarker(), e.getMessage()); + throw e; + } finally { + if (directoryStream != null) { + try { + directoryStream.close(); + } catch (IOException e) { + } + } + } + + return null; + } + + private boolean processPathItem(StoreUri tempStoreUri, String template, Path escortFile) throws IOException { + if (escortFile.toFile().isDirectory()) + return false; + + //ami nem JSON azt nem kezeljuk + if (!escortFile.getFileName().toString().toLowerCase().endsWith(EscortFiles.DOT_JSON)) + return false; + + //aminek van COLORSPACE kiterjesztésű + // Path colorspaceFile = Paths.get(escortFile.toString() + ".colorspace"); + // if (colorspaceFile.toFile().exists()) + // return false; + + if (EscortFiles.isCatchedFileExists(escortFile)) + return false; + + String fileName = escortFile.getFileName().toString(); + //minimum 3 karakter: STORENAME.FILENAME.MXF.JSON + long dotCount = fileName.chars().filter(ch -> ch == '.').count(); + if (dotCount < 3) + return false; + + try { + DownloadableMedia downloadable = EscortFiles.decode(escortFile); + logger.info(getSessionMarker(), "Starting {} for {}", template, fileName); + + StoreUri sourceStoreUri = getManager().getStoreUri("TSM", RemoteStoreProtocol.TSM); + StoreUri targetStoreUri = getManager().getStoreUri(downloadable.getLong("targetStoreUriId")); + + Map parameters = new HashMap<>(); + parameters.put("sourceStoreUri", sourceStoreUri); + parameters.put("fileName", downloadable.getString("fileName")); + parameters.put("tempStoreUri", tempStoreUri); + parameters.put("targetStoreUri", targetStoreUri); + parameters.put("expectedFrameNumber", downloadable.getLong("frames")); + parameters.put("expectedSize", downloadable.getLong("size")); + parameters.put("expectedColorSpace", downloadable.getString("colorSpace")); + parameters.put("escortFile", escortFile.toAbsolutePath().toString()); + + int priority = downloadable.containsKey("priority") ? downloadable.getInt("priority") : 0; + //IJobRuntime parent, String template, String name, int priority, Map parameters + IJobRuntime child = getEngine().submit(null, e -> { + if (e.getStatus().equals(JobStatus.CANCELED) || e.getStatus().equals(JobStatus.SUSPENDED)) + EscortFiles.removeCatchedFile(escortFile); + }, template, "Visszatöltés", priority, IJobEngine.DEFAULT_OWNER, parameters); + if (child == null) + throw new Exception("Submit error."); + + child.setRelated(downloadable.getString("title")); + EscortFiles.createCatchedFile(escortFile); + } catch (Exception e) { + logger.error(getSessionMarker(), e.getMessage()); + return false; + } + + return true; + } +} diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/GenericArchiveCheckerStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/GenericArchiveCheckerStep.java index 10f5a76e..1e6078ec 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/GenericArchiveCheckerStep.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/GenericArchiveCheckerStep.java @@ -27,18 +27,20 @@ public class GenericArchiveCheckerStep extends JobStep { @StepEntry public Object[] execute(String sourceStoreName, String protocol, String wildCard, String escortStoreName, int limit) throws Exception { - StoreUri storeUri = null; + StoreUri sourceStoreUri = null; int count = limit; try { - storeUri = getManager().getStoreUri(sourceStoreName, Enum.valueOf(RemoteStoreProtocol.class, protocol)); + sourceStoreUri = getManager().getStoreUri(sourceStoreName, Enum.valueOf(RemoteStoreProtocol.class, protocol)); StoreUri escortSoreUri = getManager().getStoreUri(escortStoreName, RemoteStoreProtocol.LOCAL); + StoreUri targetStoreUri = getManager().getStoreUri("TSM", RemoteStoreProtocol.TSM); + String outputPath = Paths.get(escortSoreUri.toString(true)).toString(); //az FTP store nem tamogatja az asszinkron listazast - List remoteFiles = storeUri.getRemoteFiles(wildCard); + List remoteFiles = sourceStoreUri.getRemoteFiles(wildCard); for (RemoteFile remoteFile : remoteFiles) { - if (processClip(sourceStoreName, remoteFile, storeUri.getId(), outputPath)) + if (processClip(sourceStoreName, remoteFile, sourceStoreUri, targetStoreUri, outputPath)) count--; if (count == 0) { @@ -50,14 +52,14 @@ public class GenericArchiveCheckerStep extends JobStep { } catch (Exception e) { throw e; } finally { - if (storeUri != null) - storeUri.cleanUp(); + if (sourceStoreUri != null) + sourceStoreUri.cleanUp(); } return null; } - private boolean processClip(String storeName, RemoteFile remoteFile, long storeUriId, String outputPath) { + private boolean processClip(String storeName, RemoteFile remoteFile, StoreUri sourceStoreUri, StoreUri targetStoreUri, String outputPath) { boolean result = false; String title = remoteFile.getName(); Timestamp modified = Timestamp.from(remoteFile.getModify().toInstant()); @@ -75,7 +77,8 @@ public class GenericArchiveCheckerStep extends JobStep { if (createEscort) { long mediaId = media == null ? 0 : media.getId(); String fileName = title + DOT_MXF; - DownloadableMedia archive = DownloadableMedia.create(title, fileName, modified, created, 0, size, storeUriId, mediaId); + DownloadableMedia archive = DownloadableMedia.create(title, fileName, modified, created, 0, size, sourceStoreUri.getId(), targetStoreUri.getId(), + mediaId); String escortFileName = storeName + "." + remoteFile.getName(); try { result = EscortFiles.createMetadataIfNotExists(outputPath, escortFileName, archive.toPrettyString("")); diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/HarrisMissingMaterialCheckerStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/HarrisMissingMaterialCheckerStep.java index 1acca884..d5851f59 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/HarrisMissingMaterialCheckerStep.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/HarrisMissingMaterialCheckerStep.java @@ -30,28 +30,44 @@ public class HarrisMissingMaterialCheckerStep extends JobStep { try { escortStoreUri = getManager().getStoreUri(escortStoreName, RemoteStoreProtocol.LOCAL); StoreUri targetStoreUri = getManager().getStoreUri(targetStoreName, Enum.valueOf(RemoteStoreProtocol.class, targetProtocol)); + StoreUri sourceStoreUri = getManager().getStoreUri("TSM", RemoteStoreProtocol.TSM); List records = null; for (Object vicFile : vicFiles) { + if (getJobRuntime().isWaitingCancel()) { + cancel(); + break; + } + Path vicFilePath = Paths.get(String.valueOf(vicFile)); logger.info("Processing {} (exists: {})", vicFilePath, vicFilePath.toFile().exists()); VICFileParser parser = new VICFileParser(vicFilePath, lineFormat, validTypeCodes); + List currentRecords = parser.getRecords(); if (records == null) - records = parser.getRecords(); - else - records.addAll(parser.getRecords()); + records = currentRecords; + else { + if (currentRecords != null) + records.addAll(currentRecords); + } } - int i = 0; - for (HarrisRecord record : records) { - processRecord(record, targetStoreName, targetStoreUri, escortStoreUri); - i++; - int progress = i * 100 / records.size(); - setProgress(progress); - } + if (records != null && !getJobRuntime().isWaitingCancel()) { + int i = 0; + for (HarrisRecord record : records) { + if (getJobRuntime().isWaitingCancel()) { + cancel(); + break; + } + + processRecord(record, targetStoreName, sourceStoreUri, targetStoreUri, escortStoreUri); + i++; + int progress = i * 100 / records.size(); + setProgress(progress); + } + } + setProgress(100); } catch (Exception e) { logger.error(getSessionMarker(), e.getMessage()); - logger.error(e.getMessage()); throw e; } finally { if (escortStoreUri != null) @@ -61,7 +77,7 @@ public class HarrisMissingMaterialCheckerStep extends JobStep { return null; } - private void processRecord(HarrisRecord record, String targetStoreName, StoreUri targetStoreUri, StoreUri escortStoreUri) { + private void processRecord(HarrisRecord record, String targetStoreName, StoreUri sourceStoreUri, StoreUri targetStoreUri, StoreUri escortStoreUri) { Media media = getManager().getMedia(record.getFileName()); String fileName = record.getFileName(); @@ -74,7 +90,8 @@ public class HarrisMissingMaterialCheckerStep extends JobStep { } DownloadableMedia downloadable = DownloadableMedia.create(media.getTitle(), fileName, media.getModified(), media.getCreated(), media.getLength(), 0L, - targetStoreUri.getId(), media.getId()); + sourceStoreUri.getId(), targetStoreUri.getId(), media.getId()); + downloadable.put("priority", 100); String escortFileName = targetStoreName + "." + downloadable.getString("fileName"); String outputPath = null; try { diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/MetadataPersisterStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/MetadataPersisterStep.java index 66813d00..cd216217 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/MetadataPersisterStep.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/MetadataPersisterStep.java @@ -48,12 +48,17 @@ public class MetadataPersisterStep extends JobStep { media.setItemId(item.getId()); media.setLength(downloadable.getLong("frames")); media.setArchived(Timestamp.from(Instant.now())); + Timestamp modified = downloadable.getTimestamp("modified"); + Timestamp created = downloadable.getTimestamp("created"); + media.setModified(modified); + media.setCreated(created); media.add(); mediaFile.setMediaId(media.getId()); mediaFile.add(); - } + } else + logger.error(getMarker(), "Status file does not exists {}", escortFilePath); } catch (Exception e) { - logger.error(e.getMessage()); + logger.error(getSessionMarker(), e.getMessage()); throw e; } return null; diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/NEXIOArchiveCheckerStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/NEXIOArchiveCheckerStep.java index 5d34da69..f3b88b6a 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/NEXIOArchiveCheckerStep.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/NEXIOArchiveCheckerStep.java @@ -24,25 +24,18 @@ public class NEXIOArchiveCheckerStep extends JobStep { private static final String DOT_MXF = ".mxf"; private static final Logger logger = LogManager.getLogger(); - private boolean check(Timestamp modified, Timestamp created, int duration, Media media) { - boolean create = media == null; - create |= create || !media.getModified().equals(modified); - create |= create || !media.getCreated().equals(created); - //a regi moziknal nincs hossz mentve - create |= create || (media.getLength() > 0 && media.getLength() != duration); - return create; - } - @StepEntry public Object[] execute(String sourceStoreName, String escortStoreName, int lastModifiedHours, int limit) throws Exception { Controller controller = null; try { StoreUri nexioStoreUri = getManager().getStoreUri(sourceStoreName, RemoteStoreProtocol.NEXIO); - StoreUri downloadStoreUri = getManager().getStoreUri(sourceStoreName, RemoteStoreProtocol.FTP); + StoreUri sourceStoreUri = getManager().getStoreUri(sourceStoreName, RemoteStoreProtocol.FTP); + StoreUri targetStoreUri = getManager().getStoreUri("TSM", RemoteStoreProtocol.TSM); StoreUri escortStoreUri = getManager().getStoreUri(escortStoreName, RemoteStoreProtocol.LOCAL); String outputPath = Paths.get(escortStoreUri.toString(true)).toString(); + logger.info(getMarker(), "Connecting mediabase {}", nexioStoreUri.toString()); if (nexioStoreUri.getPortNumber() == 0) controller = new Controller(nexioStoreUri.getUri(), nexioStoreUri.getPortNumber()); else @@ -51,11 +44,13 @@ public class NEXIOArchiveCheckerStep extends JobStep { Mediabase mediabase = controller.getMediabase(); Iterator clips = mediabase.getClips(); - processClips(sourceStoreName, downloadStoreUri.getId(), outputPath, limit, clips, lastModifiedHours); + logger.info(getMarker(), "Processing clips"); + processClips(sourceStoreName, sourceStoreUri, targetStoreUri, outputPath, limit, clips, lastModifiedHours); } catch (Exception e) { logger.error(getSessionMarker(), e.getMessage()); throw e; } finally { + setProgress(100); if (controller != null) controller.disconnect(); } @@ -63,9 +58,20 @@ public class NEXIOArchiveCheckerStep extends JobStep { return null; } - private void processClips(String storeName, long storeUriId, String outputPath, int limit, Iterator clips, int lastModifiedHours) - throws ClipNotFoundException, IOException, ProtocolException { - int count = limit; + private boolean check(Timestamp modified, Timestamp created, int duration, Media media) { + boolean create = media == null; + if (!create) { + create |= !media.getModified().equals(modified); + create |= !media.getCreated().equals(created); + //a regi moziknal nincs hossz mentve, es csak arra lovunk aminel 2 framnel nagyobb a kulonbseg + create |= media.getLength() > 0 && Math.abs(media.getLength() - duration) > 2; + } + return create; + } + + private void processClips(String storeName, StoreUri sourceStoreUri, StoreUri targetStoreUri, String outputPath, int limit, Iterator clips, + int lastModifiedHours) throws ClipNotFoundException, IOException, ProtocolException { + int currentCount = 0; while (clips.hasNext()) { if (getJobRuntime().isWaitingCancel()) { @@ -92,27 +98,33 @@ public class NEXIOArchiveCheckerStep extends JobStep { //negativ ha a masodik az elso elott van long modifiedHours = Duration.between(clipModified, Instant.now()).toHours(); if (modifiedHours > lastModifiedHours) { - logger.info(getSessionMarker(), "Modification time is too cloose for {}"); + logger.info(getMarker(), "Modification time is too cloose for {}", title); continue; } mediaId = media.getId(); } String fileName = title + DOT_MXF; - DownloadableMedia downloadable = DownloadableMedia.create(title, fileName, modified, created, frames, 0, storeUriId, mediaId); + DownloadableMedia downloadable = DownloadableMedia.create(title, fileName, modified, created, frames, 0, sourceStoreUri.getId(), + targetStoreUri.getId(), mediaId); String escortFileName = storeName + "." + downloadable.getString("fileName"); if (EscortFiles.createMetadataIfNotExists(outputPath, escortFileName, downloadable.toPrettyString(""))) { - logger.info(getSessionMarker(), "Archive status file created for {}", fileName); - count--; + logger.info(getMarker(), "Archive status file created for {}", fileName); + currentCount++; } } - //vegtelen : limit<=0 - if (count == 0) { - logger.info("Limit reached: {}", limit); + if (limit > 0) { + int p = (currentCount / limit) * 100; + setProgress(p); + } + + if (currentCount == limit) { + logger.info(getMarker(), "Limit reached: {}", limit); break; } + // logger.info(getSessionMarker(), "{} {}", limit, currentCount); } } diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/PBQuery.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/PBQuery.java new file mode 100644 index 00000000..9566b6bb --- /dev/null +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/PBQuery.java @@ -0,0 +1,308 @@ +package user.jobengine.server.steps; + +import java.io.DataInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.StringReader; +import java.net.URL; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.TreeMap; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; + +import org.apache.commons.lang.StringUtils; +import org.apache.http.Header; +import org.apache.http.HttpEntity; +import org.apache.http.HttpResponse; +import org.apache.http.auth.AuthScope; +import org.apache.http.auth.UsernamePasswordCredentials; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.DefaultHttpClient; +import org.apache.http.params.BasicHttpParams; +import org.apache.http.params.HttpConnectionParams; +import org.apache.http.params.HttpParams; +import org.apache.http.protocol.HTTP; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.w3c.dom.Document; +import org.w3c.dom.NamedNodeMap; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; +import org.xml.sax.InputSource; + +public class PBQuery { + public class MMMedia { + String name; + String usage; + } + + private static final Logger logger = LogManager.getLogger(); + private static final int CONNECTION_TIMEOUT = 1000; + private static final int SOCKET_TIMEOUT = 2000; + public static final String GETMEDIAUSAGEBYUTRANGE = "/getMediaUsageByUTRange"; + public static final String GETCUSTOMVIEW = "/getCustomView"; + + public static final String SOAP_TEMPLATE_ROOT = System.getProperty("jobengine.soap.template.root", "/opt/mediacube/configuration/soap"); + + private static Document toDocument(String xml) { + DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); + DocumentBuilder builder = null; + try { + builder = factory.newDocumentBuilder(); + Document doc = builder.parse(new InputSource(new StringReader(xml))); + return doc; + } catch (Exception e) { + logger.error(e.getMessage()); + } + return null; + } + + private SimpleDateFormat sdf_range = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss:'00'"); + private String primaryEndPoint; + private String primaryUserName; + private String primaryPassword; + private String secondaryEndPoint; + private String secondaryUserName; + + private String secondaryPassword; + + private int rangeForwardHours; + + private String getAttribute(Node node, String name) { + String result = null; + if (node != null && node.hasAttributes()) { + NamedNodeMap attributes = node.getAttributes(); + if (attributes != null) { + Node mediaNameNode = attributes.getNamedItem(name); + if (mediaNameNode != null) + result = mediaNameNode.getNodeValue(); + } + } + return result; + } + + public LinkedHashSet getPossibelMissingMaterialNames(List poolContent) throws Exception { + LinkedHashSet result = querySortableMedias(poolContent); + LinkedHashSet otherMedias = queryOtherMedias(poolContent); + result.addAll(otherMedias); + return result; + + } + + public void init(String primaryEndPoint, String primaryUserName, String primaryPassword, String secondaryEndPoint, String secondaryUserName, + String secondaryPassword, int rangeForwardHours) throws Exception { + this.primaryEndPoint = primaryEndPoint; + this.primaryUserName = primaryUserName; + this.primaryPassword = primaryPassword; + this.secondaryEndPoint = secondaryEndPoint; + this.secondaryUserName = secondaryUserName; + this.secondaryPassword = secondaryPassword; + this.rangeForwardHours = rangeForwardHours; + } + + public String query(String endPoint, String action, String soap, String user, String pwd) throws Exception { + + HttpParams httpParameters = new BasicHttpParams(); + HttpConnectionParams.setConnectionTimeout(httpParameters, CONNECTION_TIMEOUT); + HttpConnectionParams.setSoTimeout(httpParameters, SOCKET_TIMEOUT); + DefaultHttpClient httpclient = new DefaultHttpClient(httpParameters); + //http://10.170.100.61:18083 + + String result = null; + DataInputStream is = null; + try { + URL url = new URL(endPoint); + httpclient.getCredentialsProvider().setCredentials(new AuthScope(url.getHost(), url.getPort(), null, "Digest"), + new UsernamePasswordCredentials(user, pwd)); + + HttpPost httppost = new HttpPost(url.toURI()); + httppost.setHeader("soapaction", action); + //Content-Type application/soap+xml; charset=utf-8; action="/getMediaUsageByUTRange" + httppost.setHeader("Content-Type", "text/xml; charset=utf-8"); + HttpEntity entity = new StringEntity(soap.toString(), HTTP.UTF_8); + httppost.setEntity(entity); + logger.info("Executing call"); + HttpResponse response = httpclient.execute(httppost);// calling server + HttpEntity r_entity = response.getEntity(); //get response + Header[] headers = response.getAllHeaders(); + for (Header h : headers) { + logger.info("Reponse Header", h.getName() + ": " + h.getValue()); + } + if (r_entity != null) { + byte[] bytes = new byte[(int) r_entity.getContentLength()]; + if (r_entity.isStreaming()) { + is = new DataInputStream(r_entity.getContent()); + is.readFully(bytes); + } + result = new String(bytes); + } + } catch (Exception e) { + logger.error("Exception While Connecting", "" + e.getMessage()); + throw e; + } finally { + if (is != null) { + try { + is.close(); + } catch (IOException e) { + } + } + if (httpclient != null) { + httpclient.getConnectionManager().shutdown(); + } + } + + return result; + } + + public LinkedHashSet queryOtherMedias(List poolContent) throws Exception { + LinkedHashSet result = new LinkedHashSet<>(); + String xml = null; + String soap = null; + Path template = Paths.get(SOAP_TEMPLATE_ROOT, GETCUSTOMVIEW); + + if (!template.toFile().exists()) + throw new FileNotFoundException(template.toString()); + try { + soap = new String(Files.readAllBytes(template)); + xml = query(primaryEndPoint, GETCUSTOMVIEW, soap, primaryUserName, primaryPassword); + } catch (Exception e1) { + try { + xml = query(secondaryEndPoint, GETCUSTOMVIEW, soap, secondaryUserName, secondaryPassword); + } catch (Exception e2) { + } + } + + if (StringUtils.isNotBlank(xml)) { + + Document document = toDocument(xml); + NodeList mediaNodes = document.getElementsByTagName("media"); + + if (mediaNodes == null || mediaNodes.getLength() == 0) + return result; + + TreeMap usages = new TreeMap<>(); + + for (int i = 0; i < mediaNodes.getLength(); i++) { + Node mediaNode = mediaNodes.item(i); + String mediaName = getAttribute(mediaNode, "mediaName"); + if (StringUtils.isBlank(mediaName)) { + logger.info("Missing mediaName"); + continue; + } + + if (poolContent.contains(mediaName)) + continue; + + String usageTime = getAttribute(mediaNode, "earliestUsageTime"); + logger.info("{}, {}", mediaName, usageTime); + //a TreeMap lehetove teszi: nincs duplikatum + a korabbi musorok elore kerulnek + usages.put(usageTime + "_" + mediaName, mediaName); + + } + + for (String key : usages.keySet()) { + MMMedia media = new MMMedia(); + media.name = usages.get(key); + media.usage = key.split("_")[0]; + result.add(media); + } + logger.info("Document done, items {}", mediaNodes.getLength()); + } + return result; + } + + public LinkedHashSet querySortableMedias(List poolContent) throws Exception { + LinkedHashSet result = new LinkedHashSet<>(); + String xml = null; + String soap = null; + + Path template = Paths.get(SOAP_TEMPLATE_ROOT, GETMEDIAUSAGEBYUTRANGE); + if (!template.toFile().exists()) + throw new FileNotFoundException(template.toString()); + + try { + long now = System.currentTimeMillis(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(now); + cal.add(Calendar.HOUR_OF_DAY, rangeForwardHours); + + String fromDateStr = sdf_range.format(new Date(now)); + String toDateStr = sdf_range.format(cal.getTime()); + + soap = new String(Files.readAllBytes(template)); + soap = soap.replace("{start}", fromDateStr); + soap = soap.replace("{end}", toDateStr); + + xml = query(primaryEndPoint, GETMEDIAUSAGEBYUTRANGE, soap, primaryUserName, primaryPassword); + } catch (Exception e1) { + try { + xml = query(secondaryEndPoint, GETMEDIAUSAGEBYUTRANGE, soap, secondaryUserName, secondaryPassword); + } catch (Exception e2) { + } + } + + if (StringUtils.isNotBlank(xml)) { + + Document document = toDocument(xml); + NodeList mediaNodes = document.getElementsByTagName("mediaUsage"); + + if (mediaNodes == null || mediaNodes.getLength() == 0) + return result; + + TreeMap usages = new TreeMap<>(); + + for (int i = 0; i < mediaNodes.getLength(); i++) { + Node mediaNode = mediaNodes.item(i); + String mediaName = getAttribute(mediaNode, "mediaName"); + if (StringUtils.isBlank(mediaName)) { + logger.info("Missing mediaName"); + continue; + } + + if (poolContent.contains(mediaName)) + continue; + + Node usageChild = mediaNode.getFirstChild(); + if (usageChild == null) { + logger.info("Skipping {}, no media usage defined", mediaName); + continue; + } + + NodeList usageNodes = usageChild.getChildNodes(); + if (usageNodes == null || usageNodes.getLength() == 0) { + logger.info("Skipping {}, no media usage defined", mediaName); + continue; + } + + for (int j = 0; j < usageNodes.getLength(); j++) { + Node mediaUsageNode = usageNodes.item(j); + String usageTime = getAttribute(mediaUsageNode, "earliestUsageTime"); + logger.info("{}, {}", mediaName, usageTime); + //a TreeMap lehetove teszi: nincs duplikatum + a korabbi musorok elore kerulnek + usages.put(usageTime + "_" + mediaName, mediaName); + } + + } + + for (String key : usages.keySet()) { + MMMedia media = new MMMedia(); + media.name = usages.get(key); + media.usage = key.split("_")[0]; + result.add(media); + } + logger.info("Document done, items {}", mediaNodes.getLength()); + + } + return result; + } + +} diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/RegisterUserRestoreStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/RegisterUserRestoreStep.java new file mode 100644 index 00000000..c98f2ce4 --- /dev/null +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/RegisterUserRestoreStep.java @@ -0,0 +1,70 @@ +package user.jobengine.server.steps; + +import java.nio.file.Paths; +import java.util.List; + +import org.apache.commons.lang.StringUtils; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import user.commons.DownloadableMedia; +import user.commons.StoreUri; +import user.commons.remotestore.RemoteStoreProtocol; +import user.jobengine.db.ArchivedMedia; +import user.jobengine.db.Media; + +public class RegisterUserRestoreStep extends JobStep { + private static final Logger logger = LogManager.getLogger(); + private static final String appendExtension = System.getProperty("missingmaterial.appendextension", ".mxf"); + + @StepEntry + public Object[] execute(String escortStoreName, String targetStoreName, List basket, String recipient) throws Exception { + StoreUri escortStoreUri = null; + try { + escortStoreUri = getManager().getStoreUri(escortStoreName, RemoteStoreProtocol.LOCAL); + StoreUri targetStoreUri = getManager().getStore(targetStoreName).getTargetStoreUri(); + StoreUri sourceStoreUri = getManager().getStoreUri("TSM", RemoteStoreProtocol.TSM); + int processed = 0; + for (ArchivedMedia media : basket) { + processRecord(media, targetStoreName, sourceStoreUri, targetStoreUri, escortStoreUri, recipient); + processed++; + int progress = processed * 100 / basket.size(); + setProgress(progress); + } + } catch (Exception e) { + logger.error(getSessionMarker(), e.getMessage()); + throw e; + } finally { + if (escortStoreUri != null) + escortStoreUri.cleanUp(); + } + + return null; + } + + private void processRecord(ArchivedMedia archivedMedia, String targetStoreName, StoreUri sourceStoreUri, StoreUri targetStoreUri, StoreUri escortStoreUri, + String recipient) { + Media media = archivedMedia.getMedia(); + + String fileName = media.getTitle(); + if (StringUtils.isNotBlank(appendExtension)) + fileName += appendExtension; + + DownloadableMedia downloadable = DownloadableMedia.create(media.getTitle(), fileName, media.getModified(), media.getCreated(), media.getLength(), 0L, + sourceStoreUri.getId(), targetStoreUri.getId(), media.getId()); + downloadable.put("recipient", recipient); + String escortFileName = targetStoreName + "." + downloadable.getString("fileName"); + String outputPath = null; + try { + outputPath = Paths.get(escortStoreUri.toString(true)).toString(); + if (EscortFiles.createMetadataIfNotExists(outputPath, escortFileName, downloadable.toPrettyString(""))) + logger.info(getSessionMarker(), "Status file created {}", escortFileName); + else + logger.info(getSessionMarker(), "Status file already exists {}", escortFileName); + } catch (Exception e) { + logger.error("Can't create escort file {}", Paths.get(outputPath.toString(), escortFileName)); + } + + } + +} diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/TestForkCancelableStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/TestForkCancelableStep.java index 6d0e2057..91d00a8d 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/TestForkCancelableStep.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/TestForkCancelableStep.java @@ -3,6 +3,9 @@ package user.jobengine.server.steps; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import user.commons.IJob; +import user.commons.JobStatus; +import user.commons.ListUtils; import user.jobengine.server.IJobEngine; import user.jobengine.server.IJobRuntime; @@ -11,18 +14,23 @@ public class TestForkCancelableStep extends JobStep { // private static final String CHILD_TEMPLATE = "fake-concurrent.xml"; private static final String CHILD_TEMPLATE = "cancelable.xml"; private static final Logger logger = LogManager.getLogger(); - int count = 2; + int count = 5; @StepEntry public Object[] execute(IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception { - if (jobRuntime.forkPrepare()) { - for (int i = 0; i < count; i++) { - //jobEngine.submit(jobRuntime, null, CHILD_TEMPLATE, CHILD_TITLE, ListUtils.asMap("itemID", i)); - jobEngine.submit(jobRuntime, null, CHILD_TEMPLATE, CHILD_TITLE, null); - } + //jobRuntime.forkPrepare(); + for (int i = 0; i < count; i++) { + //jobEngine.submit(jobRuntime, null, CHILD_TEMPLATE, CHILD_TITLE, ListUtils.asMap("itemID", i)); + // IJobRuntime runtime = jobEngine.submit(jobRuntime, null, CHILD_TEMPLATE, "JOB " + i, ListUtils.asMap("param", i)); + IJobRuntime runtime = getEngine().submit(null, e -> { + if (e.getStatus().equals(JobStatus.CANCELED) || e.getStatus().equals(JobStatus.SUSPENDED)) + logger.info("Cleanup occured because status is {} {}", e.getStatus(), ((IJob) e.getSource()).getId()); + }, CHILD_TEMPLATE, "JOB " + i, 0, IJobEngine.DEFAULT_OWNER, ListUtils.asMap("param", i)); + + runtime.setRelated("TEST" + runtime.getId()); } - jobRuntime.forkWaitComplete(); + // jobRuntime.forkWaitComplete(); logger.info("Done"); return null; } diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/TransferStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/TransferStep.java index ac382368..804c5d26 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/TransferStep.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/TransferStep.java @@ -10,19 +10,21 @@ import user.commons.remotestore.RemoteStoreProtocol; public class TransferStep extends JobStep { private static final Logger logger = LogManager.getLogger(); - private static final boolean symulateTransferToTSM = Boolean.parseBoolean(System.getProperty("test.simulate.transfer.tsm", "false")); + private static final boolean simulateTransferToTSM = Boolean.parseBoolean(System.getProperty("test.simulate.transfer.tsm", "false")); @StepEntry public Object[] execute(StoreUri sourceStoreUri, String sourceFileName, StoreUri targetStoreUri, String targetFileName) throws Exception { try { String description = Paths.get(sourceStoreUri.toString(true), sourceFileName).toString(); getJobRuntime().setDescription(description); + + //logger.info(getSessionMarker(), String.valueOf(isSimulateTSMWrite(sourceStoreUri, targetStoreUri))); if (isSimulateTSMWrite(sourceStoreUri, targetStoreUri)) { - logger.info(getSessionMarker(), "Skipping real TSM write of {} from {} to {}", sourceFileName, sourceStoreUri, targetStoreUri); + logger.info(getMarker(), "Skipping real TSM write of {} from {} to {}", sourceFileName, sourceStoreUri, targetStoreUri); } else { sourceStoreUri.addProgressListener(e -> setProgress(e.getProgress())); sourceStoreUri.transferFrom(targetStoreUri, sourceFileName, targetFileName); - logger.info(getSessionMarker(), "Transfer of {} completed from {} to {}", sourceFileName, sourceStoreUri, targetStoreUri); + logger.info(getMarker(), "Transfer of {} completed from {} to {}", sourceFileName, sourceStoreUri, targetStoreUri); } } catch (Exception e) { logger.error(getSessionMarker(), "Error in transfer of {} when copying from {} to {}", sourceFileName, sourceStoreUri, targetStoreUri); @@ -37,6 +39,6 @@ public class TransferStep extends JobStep { } private boolean isSimulateTSMWrite(StoreUri sourceStoreUri, StoreUri targetStoreUri) { - return symulateTransferToTSM && (RemoteStoreProtocol.TSM.equals(targetStoreUri.getProtocol())); + return simulateTransferToTSM && (RemoteStoreProtocol.TSM.equals(targetStoreUri.getProtocol())); } } diff --git a/server/user.jobengine.osgi.commons/deploy.launch b/server/user.jobengine.osgi.commons/build-user-jobengine-osgi-commons.launch similarity index 100% rename from server/user.jobengine.osgi.commons/deploy.launch rename to server/user.jobengine.osgi.commons/build-user-jobengine-osgi-commons.launch diff --git a/server/user.jobengine.osgi.commons/src/pb/wsclient/PBClientTest.java b/server/user.jobengine.osgi.commons/src/pb/wsclient/PBClientTest.java deleted file mode 100644 index ca10a8f7..00000000 --- a/server/user.jobengine.osgi.commons/src/pb/wsclient/PBClientTest.java +++ /dev/null @@ -1,73 +0,0 @@ -package pb.wsclient; - -import java.net.URL; -import java.util.List; -import javax.xml.ws.BindingProvider; - - -public class PBClientTest { - - - //KONSTRUKTOR - public PBClientTest() { - try { - - URL wsdlURL = PBClientTest.class.getClassLoader().getResource("MarinaAPI.wsdl"); - - PBSMarinaAPIService api = new PBSMarinaAPIService(wsdlURL); - PBSMarinaAPI port = api.getPBSMarinaAPISOAPPort(); - - BindingProvider bp = (BindingProvider)port; - bp.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "http://10.170.100.5:18083"); - - //Optional credentials - bp.getRequestContext().put(BindingProvider.USERNAME_PROPERTY, "pbs"); - bp.getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, "pbs"); - - - DateTimecodeRangeContainer rangec = new DateTimecodeRangeContainer(); - DateTimecodeRange range = new DateTimecodeRange(); - range.setStart("2019-03-26T10:00:00:00"); //now - range.setEnd("2019-03-29T10:00:00:00"); //now + x hours - rangec.setDateTimecodeRange(range); - - - - MediaUsageListContainer mulc = port.getMediaUsageByUTRange(rangec,false,true); - MediaUsageList mul = mulc.getMediaUsageList(); - - List mediaList = mul.getMediaUsage(); - java.lang.System.out.println("response ok: " + mediaList.size()); - for(MediaUsage mu : mediaList) { - - if(MediaType.VIDEO.equals(mu.getMediaType())) { - java.lang.System.out.println(mu.getMediaName() + " ***********************"); - MediaUsage.MediaInstancesUsage muUsage = mu.getMediaInstancesUsage(); - List muUsageList = muUsage.getMediaInstanceUsage(); - for(MediaInstanceUsage usage : muUsageList) { - java.lang.System.out.println(" LastUsageTime(): " + usage.getLastUsageTime() + ", EarliestUsageTime(): " + usage.getEarliestUsageTime()); - } - }else { - java.lang.System.out.println("Skip media type: " + mu.getMediaType() + " for: " + mu.getMediaName()); - } - - //MediaType muType = mu.getMediaType(); - } - - - //\\10.170.100.10\media - - }catch(Exception exc) { - exc.printStackTrace(); - } - } - - - - - public static void main(String[] args) { - new PBClientTest(); - - } - -} diff --git a/server/user.jobengine.osgi.commons/src/user/commons/DownloadableMedia.java b/server/user.jobengine.osgi.commons/src/user/commons/DownloadableMedia.java index 9304a403..a7288405 100644 --- a/server/user.jobengine.osgi.commons/src/user/commons/DownloadableMedia.java +++ b/server/user.jobengine.osgi.commons/src/user/commons/DownloadableMedia.java @@ -6,8 +6,8 @@ import com.ibm.nosql.json.api.BasicDBObject; public class DownloadableMedia extends BasicDBObject { - public static DownloadableMedia create(String title, String fileName, Timestamp modified, Timestamp created, long frames, long size, long storeUriId, - long mediaId) { + public static DownloadableMedia create(String title, String fileName, Timestamp modified, Timestamp created, long frames, long size, long sourceStoreUriId, + long targetStoreUriId, long mediaId) { DownloadableMedia archive = new DownloadableMedia(); archive.put("title", title); archive.put("fileName", fileName); @@ -15,7 +15,8 @@ public class DownloadableMedia extends BasicDBObject { archive.put("created", created); archive.put("frames", frames); archive.put("size", size); - archive.put("storeUriId", storeUriId); + archive.put("sourceStoreUriId", sourceStoreUriId); + archive.put("targetStoreUriId", targetStoreUriId); archive.put("mediaId", mediaId); return archive; } diff --git a/server/user.jobengine.osgi.commons/src/user/commons/IJob.java b/server/user.jobengine.osgi.commons/src/user/commons/IJob.java index 5a9dbfb8..948aa44d 100644 --- a/server/user.jobengine.osgi.commons/src/user/commons/IJob.java +++ b/server/user.jobengine.osgi.commons/src/user/commons/IJob.java @@ -13,12 +13,16 @@ public interface IJob extends IEntityBase { String getOwner(); + Map getParameters(); + long getParentJobId(); int getPriority(); int getProgress(); + String getRelated(); + Timestamp getScheduledTime(); JobStatus getStatus(); @@ -47,6 +51,8 @@ public interface IJob extends IEntityBase { void setProgress(int progress); + void setRelated(String related); + void setScheduledTime(Timestamp scheduledTime); void setStatus(JobStatus status); diff --git a/server/user.jobengine.osgi.commons/src/user/commons/Job.java b/server/user.jobengine.osgi.commons/src/user/commons/Job.java index 1bd10cd2..49200ffe 100644 --- a/server/user.jobengine.osgi.commons/src/user/commons/Job.java +++ b/server/user.jobengine.osgi.commons/src/user/commons/Job.java @@ -11,13 +11,15 @@ public class Job extends Syncable implements IJob, Comparable { protected final static AtomicLong counter1 = new AtomicLong(); protected volatile int priority; - protected String name = null; - protected String owner = null; - protected volatile JobStatus status = null; - protected volatile String description = null; - protected String template = null; - protected volatile Timestamp submitted = null; - protected volatile Timestamp finished = null; + private Map parameters; + protected String name; + protected String owner; + private String related; + protected volatile JobStatus status; + protected volatile String description; + protected String template; + protected volatile Timestamp submitted; + protected volatile Timestamp finished; protected volatile int progress; private Timestamp scheduledTime; private long parentJobId; @@ -71,6 +73,11 @@ public class Job extends Syncable implements IJob, Comparable { return owner; } + @Override + public Map getParameters() { + return parameters; + } + @Override public long getParentJobId() { return parentJobId; @@ -86,6 +93,11 @@ public class Job extends Syncable implements IJob, Comparable { return progress; } + @Override + public String getRelated() { + return related; + } + @Override @XmlJavaTypeAdapter(TimestampAdapter.class) public Timestamp getScheduledTime() { @@ -139,6 +151,7 @@ public class Job extends Syncable implements IJob, Comparable { @Override public void setParameters(Map parameters) { + this.parameters = parameters; } @Override @@ -158,6 +171,11 @@ public class Job extends Syncable implements IJob, Comparable { this.progress = progress; } + @Override + public void setRelated(String related) { + this.related = related; + } + @Override public void setScheduledTime(Timestamp scheduledTime) { this.scheduledTime = scheduledTime; @@ -182,4 +200,5 @@ public class Job extends Syncable implements IJob, Comparable { public String toString() { return String.format("## %d / %s / %s [%s] ##", getId(), getName(), getTemplate(), status); } + } diff --git a/server/user.jobengine.osgi.commons/src/user/commons/StoreUri.java b/server/user.jobengine.osgi.commons/src/user/commons/StoreUri.java index 5c3f94d5..9f0db73e 100644 --- a/server/user.jobengine.osgi.commons/src/user/commons/StoreUri.java +++ b/server/user.jobengine.osgi.commons/src/user/commons/StoreUri.java @@ -228,7 +228,8 @@ public class StoreUri extends EntityBase implements Serializable { public RemoteFile getRemoteFile(String fileName) throws Exception { ensureLister(); - return lister.get(fileName); + RemoteFile remoteFile = lister.get(fileName); + return remoteFile; } public List getRemoteFiles() throws Exception { @@ -386,7 +387,7 @@ public class StoreUri extends EntityBase implements Serializable { RemoteFile remoteFile = lister.get(fileName); if (remoteFile == null) throw new Exception(String.format("RemoteFile '%s' not exists.", fileName)); - logger.info("RemoteFile:" + remoteFile.getName() + " " + remoteFile.getSize()); + logger.info("Transfering RemoteFile {}, size {}", remoteFile.getName(), remoteFile.getSize()); IDirectoryLister outputLister = RemoteFileHandler.createLister(targetStoreUri); if (outputLister == null) throw new Exception("OutputLister is null."); diff --git a/server/user.jobengine.osgi.commons/src/user/commons/remotestore/TSMInputStream.java b/server/user.jobengine.osgi.commons/src/user/commons/remotestore/TSMInputStream.java index 1ea413dd..9638e979 100644 --- a/server/user.jobengine.osgi.commons/src/user/commons/remotestore/TSMInputStream.java +++ b/server/user.jobengine.osgi.commons/src/user/commons/remotestore/TSMInputStream.java @@ -15,28 +15,23 @@ public class TSMInputStream extends InputStream { private static final Logger logger = LogManager.getLogger(); private TSMBufferedClient client; private TSMBackupFileObject backupObject; - private String filespaceName; - private String highLevelName; private RemoteFile remoteFile; private boolean initialized; - public TSMInputStream(TSMBufferedClient client, String filespaceName, String highLevelName, RemoteFile remoteFile) { + public TSMInputStream(TSMBufferedClient client, RemoteFile remoteFile) { this.client = client; - this.filespaceName = filespaceName; - this.highLevelName = highLevelName; this.remoteFile = remoteFile; } @Override public void close() { client.disconnect(); - logger.info("TSM lekapcsol�dott!"); + logger.info("TSM disconnected"); } public void open() throws TSMException { - backupObject = client.getActiveBackupFileObject(filespaceName, highLevelName, remoteFile.getName()); - logger.info("BackupObject created"); + backupObject = (TSMBackupFileObject) remoteFile.getSourceObject(); } @Override diff --git a/server/user.jobengine.osgi.commons/src/user/commons/remotestore/TSMLister.java b/server/user.jobengine.osgi.commons/src/user/commons/remotestore/TSMLister.java index a7ffedd5..8129cda5 100644 --- a/server/user.jobengine.osgi.commons/src/user/commons/remotestore/TSMLister.java +++ b/server/user.jobengine.osgi.commons/src/user/commons/remotestore/TSMLister.java @@ -17,16 +17,17 @@ import user.tsm.client.TSMBufferedClient; public class TSMLister implements IDirectoryLister { - private static final String FSNAME = File.separator + System.getProperty("tsm.fsname", "JOBENGINE"); - private static final String HLNAME = File.separator + System.getProperty("tsm.hlname", "JOBENGINE"); + private static final String NODENAME = System.getProperty("tsm.nodename", "JOBENGINE"); + private static final String FSNAME = System.getProperty("tsm.fsname", "JOBENGINE"); + private static final String HLNAME = System.getProperty("tsm.hlname", "JOBENGINE"); private static final Logger logger = LogManager.getLogger(); private TSMBufferedClient client; public TSMLister(StoreUri storeUri) throws Exception { - client = new TSMBufferedClient(); - logger.info("TSMBufferedClient created!"); + client = new TSMBufferedClient(NODENAME); + logger.info("TSMBufferedClient created"); client.connect(storeUri.getUserName(), storeUri.getPassword()); - logger.info("TSMBufferedClient connected!"); + logger.info("TSMBufferedClient connected, parameters: {} {} {}, separator: {}", NODENAME, FSNAME, HLNAME, File.separator); } @Override @@ -61,19 +62,31 @@ public class TSMLister implements IDirectoryLister { @Override public RemoteFile get(String fileName) throws Exception { RemoteFile result = null; - TSMBackupFileObject backupFileObject = client.getActiveBackupFileObject(FSNAME, HLNAME, File.separator + fileName); - logger.info("TSMLister get"); + + String currentFileName = fileName; + logger.info("Getting {}, {}, {}", FSNAME, HLNAME, currentFileName); + TSMBackupFileObject backupFileObject = client.getActiveBackupFileObject(FSNAME, "\\", "\\" + currentFileName); + + //probaljuk meg kiterjesztes nelkul is + if (backupFileObject == null && currentFileName.contains(".")) { + currentFileName = fileName.substring(0, fileName.lastIndexOf(".")); + logger.info("Getting {}, {}, {}", FSNAME, HLNAME, currentFileName); + backupFileObject = client.getActiveBackupFileObject(FSNAME, "\\", "\\" + currentFileName); + } + if (backupFileObject != null) { result = toRemoteFile(backupFileObject); - logger.info("BackupFileObject: " + backupFileObject.getLowLevelName()); - } else + logger.info("Got object {}, {}, {}", FSNAME, HLNAME, currentFileName); + } else { + logger.info("Object not exists {}, {}, {}", FSNAME, HLNAME, currentFileName); cleanUp(); + } return result; } @Override public InputStream getInputStream(RemoteFile remoteFile) throws Exception { - TSMInputStream inputStream = new TSMInputStream(client, FSNAME, HLNAME, remoteFile); + TSMInputStream inputStream = new TSMInputStream(client, remoteFile); logger.info("TSM InputStream created"); inputStream.open(); return inputStream; @@ -118,6 +131,7 @@ public class TSMLister implements IDirectoryLister { RemoteFile result = new RemoteFile(); result.setName(file.getLowLevelName()); result.setSize(file.getSizeEstimate()); + result.setSourceObject(file); return result; } } diff --git a/server/user.jobengine.osgi.db/generated/user/jobengine/db/BreakDAO_SJProfile0.ser b/server/user.jobengine.osgi.db/generated/user/jobengine/db/BreakDAO_SJProfile0.ser index c372d0268fb1a9c11bb6ba826e4cdba0a1898b36..880386d43b23b54a476b27dc181042200d2e4462 100644 GIT binary patch delta 18 Zcmdlgxm9ul4wdNZ@!&4P?exB)vc1wdNZ@Vn*|x4a{vHEx(3() delta 18 Zcmew%{6lyH4te_DP64wdNZ?^n*|wn@c{rq^ah&% delta 18 ZcmX>te_DP64uaa>{p4wdNXs!&4P?(+yFb61y=w7 delta 18 ZcmX>uaa>{p4wdNXtP&4P^itW1m&lh|z;r6(U?vuAV%F@3wdNcFb&4P^ld;m9x1q}cI delta 18 ZcmZ1=w?J+K4WwdNcFl&4P^cH~=}p1+)MF delta 18 ZcmZ24yk2+%4%hguAS&*@k6#y`Y1m*w$ diff --git a/server/user.jobengine.osgi.db/generated/user/jobengine/db/ItemDAO_SJProfile0.ser b/server/user.jobengine.osgi.db/generated/user/jobengine/db/ItemDAO_SJProfile0.ser index 1fbc0c8a69ff779248fbfb19d483630936a12299..7199db4ef7f86e9e6c0f1ba971066e9021843df9 100644 GIT binary patch delta 18 acmeyU_)&2K4wdNcD0n*|vk@B;uveg?V# delta 18 ZcmeyU_)&2K4%_yIye25SHS diff --git a/server/user.jobengine.osgi.db/generated/user/jobengine/db/ItemTypeDAO_SJProfile0.ser b/server/user.jobengine.osgi.db/generated/user/jobengine/db/ItemTypeDAO_SJProfile0.ser index c0d5873b00dbb65dd2ed9a0d0e69dddb2e4c965c..74fea23f0f0fe37e8f6ccd09f56f0432a0ca3bed 100644 GIT binary patch delta 18 Zcmew=_El^H4wdNcFon*|wDxBx^m20{P; delta 18 Zcmew=_El^H4wdNcD~n*|v!GqQ3P7cr{@$Sh8c@gUC@9z~Xe!t#7$9830dY;xWKFI@#_-9rxymK87#J8D7#J9sL19!- zfMmNicM>Dm9bi|2h)A%vq!<_&PEPjbl4m?Kc_q(Uq~HqRRb#A~EX=J~--Y5sklqrw z-hK?ZGPv9ns2mGOixG&ZfXmIqkgI~r%|kV_o}rGR1}?c6Rg$5Op$;y$0xA~^61D~r z4RE=&7;;T;xlI^mw!r1KGgw377hz}{TyhVF#z;h%0CzsG@&Et; delta 563 zcmZ3gHBn^)4PNT$Y{Pfoh6r%(Qa}shxp`v zE-uFA$=_L(7`Z1O;1b_#$X3C~T*A;c`7C?xWNu!i$!A&F8C@sma;PzKZ$7|f0+K8T zNlGiY1^N3bc=L*-&Yc3FdnY`EMK47psm z+)4~H^NTe>+CjcwhoP~spcEu20Se<1hE0>F2^LQl60)5fA|%9E2a8Ol$(V+MbjiZ? O!lUsSIF5@&HUR*F*LxNK diff --git a/server/user.jobengine.osgi.db/generated/user/jobengine/db/JobParametersDAO_SJProfile0.ser b/server/user.jobengine.osgi.db/generated/user/jobengine/db/JobParametersDAO_SJProfile0.ser index 33857e114a97d3621f503f353587e255da3d0fb3..e4e2ef02a60eecc995ae696ae2e49d6ac47a33d0 100644 GIT binary patch delta 18 Zcmdliv{`5a4wdNcF$n*|w_H~>3Y1)2Z= delta 18 Zcmdliv{`5a4wdNcEjn*|xuSOG*b23Y_A delta 18 Zcmey)^POh{4wdNcFyn*|x~2?78}A_pY^ delta 18 ZcmaE_`d)Pd4(); @@ -121,10 +130,10 @@ public class MediaFileDAO extends EntityBaseDAO { @Override protected ResultSetIterImpl selectByKey(DefaultContext context, long id) throws SQLException{ MediaFileIter iter = null; - /*@lineinfo:generated-code*//*@lineinfo:43^2*/ + /*@lineinfo:generated-code*//*@lineinfo:44^2*/ // ************************************************************ -// #sql [context] iter = { SELECT ID, MEDIAID, STOREID, FILETYPEID, RELATIVEPATH, FILESTRUCTINFO, HOUSEID FROM MEDIAFILE WHERE ID = :id }; +// #sql [context] iter = { SELECT ID, MEDIAID, STOREID, FILETYPEID, RELATIVEPATH, FILESTRUCTINFO, HOUSEID, FILESIZE FROM MEDIAFILE WHERE ID = :id }; // ************************************************************ { @@ -149,17 +158,17 @@ public class MediaFileDAO extends EntityBaseDAO { // ************************************************************ -/*@lineinfo:user-code*//*@lineinfo:43^135*/ +/*@lineinfo:user-code*//*@lineinfo:44^145*/ return iter; } @Override protected ResultSetIterImpl selectByForeignKey(DefaultContext context, long id) throws SQLException{ MediaFileIter iter = null; - /*@lineinfo:generated-code*//*@lineinfo:50^2*/ + /*@lineinfo:generated-code*//*@lineinfo:51^2*/ // ************************************************************ -// #sql [context] iter = { SELECT ID, MEDIAID, STOREID, FILETYPEID, RELATIVEPATH, FILESTRUCTINFO, HOUSEID FROM MEDIAFILE WHERE MEDIAID = :id }; +// #sql [context] iter = { SELECT ID, MEDIAID, STOREID, FILETYPEID, RELATIVEPATH, FILESTRUCTINFO, HOUSEID, FILESIZE FROM MEDIAFILE WHERE MEDIAID = :id }; // ************************************************************ { @@ -184,17 +193,17 @@ public class MediaFileDAO extends EntityBaseDAO { // ************************************************************ -/*@lineinfo:user-code*//*@lineinfo:50^140*/ +/*@lineinfo:user-code*//*@lineinfo:51^150*/ return iter; } @Override protected ResultSetIterImpl selectAll(DefaultContext context) throws SQLException{ MediaFileIter iter = null; - /*@lineinfo:generated-code*//*@lineinfo:57^2*/ + /*@lineinfo:generated-code*//*@lineinfo:58^2*/ // ************************************************************ -// #sql [context] iter = { SELECT ID, MEDIAID, STOREID, FILETYPEID, RELATIVEPATH, FILESTRUCTINFO, HOUSEID FROM MEDIAFILE }; +// #sql [context] iter = { SELECT ID, MEDIAID, STOREID, FILETYPEID, RELATIVEPATH, FILESTRUCTINFO, HOUSEID, FILESIZE FROM MEDIAFILE }; // ************************************************************ { @@ -218,13 +227,13 @@ public class MediaFileDAO extends EntityBaseDAO { // ************************************************************ -/*@lineinfo:user-code*//*@lineinfo:57^120*/ +/*@lineinfo:user-code*//*@lineinfo:58^130*/ return iter; } @Override protected void delete(DefaultContext context, long id) throws SQLException{ - /*@lineinfo:generated-code*//*@lineinfo:63^2*/ + /*@lineinfo:generated-code*//*@lineinfo:64^2*/ // ************************************************************ // #sql [context] { DELETE FROM MEDIAFILE WHERE ID = :id }; @@ -252,12 +261,12 @@ public class MediaFileDAO extends EntityBaseDAO { // ************************************************************ -/*@lineinfo:user-code*//*@lineinfo:63^56*/ +/*@lineinfo:user-code*//*@lineinfo:64^56*/ } @Override protected void truncateTable(DefaultContext context) throws SQLException{ - /*@lineinfo:generated-code*//*@lineinfo:68^2*/ + /*@lineinfo:generated-code*//*@lineinfo:69^2*/ // ************************************************************ // #sql [context] { TRUNCATE TABLE MEDIAFILE DROP STORAGE IGNORE DELETE TRIGGERS IMMEDIATE }; @@ -284,7 +293,7 @@ public class MediaFileDAO extends EntityBaseDAO { // ************************************************************ -/*@lineinfo:user-code*//*@lineinfo:68^90*/ +/*@lineinfo:user-code*//*@lineinfo:69^90*/ } @Override @@ -297,11 +306,12 @@ public class MediaFileDAO extends EntityBaseDAO { String relativePath = obj.getRelativePath(); String fileStructInfo = obj.getFileStructInfo(); String houseId = obj.getHouseId(); + long fileSize = obj.getFileSize(); - /*@lineinfo:generated-code*//*@lineinfo:82^2*/ + /*@lineinfo:generated-code*//*@lineinfo:84^2*/ // ************************************************************ -// #sql [context] { UPDATE MEDIAFILE SET MEDIAID = :mediaId, STOREID = :storeId, FILETYPEID = :fileTypeId, RELATIVEPATH = :relativePath, FILESTRUCTINFO = :fileStructInfo, HOUSEID = :houseId WHERE ID = :id }; +// #sql [context] { UPDATE MEDIAFILE SET MEDIAID = :mediaId, STOREID = :storeId, FILETYPEID = :fileTypeId, RELATIVEPATH = :relativePath, FILESTRUCTINFO = :fileStructInfo, HOUSEID = :houseId, FILESIZE = :fileSize WHERE ID = :id }; // ************************************************************ { @@ -319,7 +329,8 @@ public class MediaFileDAO extends EntityBaseDAO { __sJT_stmt.setString(4, relativePath); __sJT_stmt.setString(5, fileStructInfo); __sJT_stmt.setString(6, houseId); - __sJT_stmt.setLong(7, id); + __sJT_stmt.setLong(7, fileSize); + __sJT_stmt.setLong(8, id); __sJT_execCtx.executeUpdate(); } finally @@ -332,7 +343,7 @@ public class MediaFileDAO extends EntityBaseDAO { // ************************************************************ -/*@lineinfo:user-code*//*@lineinfo:82^204*/ +/*@lineinfo:user-code*//*@lineinfo:84^226*/ } @Override @@ -344,11 +355,12 @@ public class MediaFileDAO extends EntityBaseDAO { String relativePath = obj.getRelativePath(); String fileStructInfo = obj.getFileStructInfo(); String houseId = obj.getHouseId(); + long fileSize = obj.getFileSize(); - /*@lineinfo:generated-code*//*@lineinfo:95^2*/ + /*@lineinfo:generated-code*//*@lineinfo:98^2*/ // ************************************************************ -// #sql [context] { INSERT INTO MEDIAFILE (MEDIAID, STOREID, FILETYPEID, RELATIVEPATH, FILESTRUCTINFO, HOUSEID) VALUES (:mediaId, :storeId, :fileTypeId, :relativePath, :fileStructInfo, :houseId) }; +// #sql [context] { INSERT INTO MEDIAFILE (MEDIAID, STOREID, FILETYPEID, RELATIVEPATH, FILESTRUCTINFO, HOUSEID, FILESIZE) VALUES (:mediaId, :storeId, :fileTypeId, :relativePath, :fileStructInfo, :houseId, :fileSize) }; // ************************************************************ { @@ -366,6 +378,7 @@ public class MediaFileDAO extends EntityBaseDAO { __sJT_stmt.setString(4, relativePath); __sJT_stmt.setString(5, fileStructInfo); __sJT_stmt.setString(6, houseId); + __sJT_stmt.setLong(7, fileSize); __sJT_execCtx.executeUpdate(); } finally @@ -378,7 +391,7 @@ public class MediaFileDAO extends EntityBaseDAO { // ************************************************************ -/*@lineinfo:user-code*//*@lineinfo:95^194*/ +/*@lineinfo:user-code*//*@lineinfo:98^215*/ } void addAll(DefaultContext context, IEntityBase entity) throws SQLException { @@ -399,7 +412,7 @@ public class MediaFileDAO extends EntityBaseDAO { void removeAll(DefaultContext context, long filterId) throws SQLException { manager.traceIn(); - /*@lineinfo:generated-code*//*@lineinfo:116^2*/ + /*@lineinfo:generated-code*//*@lineinfo:119^2*/ // ************************************************************ // #sql [context] { DELETE FROM MEDIAFILE WHERE MEDIAID = :filterId }; @@ -427,16 +440,16 @@ public class MediaFileDAO extends EntityBaseDAO { // ************************************************************ -/*@lineinfo:user-code*//*@lineinfo:116^67*/ +/*@lineinfo:user-code*//*@lineinfo:119^67*/ manager.traceOut(); } private MediaFileIter selectByHouseId(DefaultContext context, String houseId) throws SQLException{ MediaFileIter iter = null; - /*@lineinfo:generated-code*//*@lineinfo:122^2*/ + /*@lineinfo:generated-code*//*@lineinfo:125^2*/ // ************************************************************ -// #sql [context] iter = { SELECT ID, MEDIAID, STOREID, FILETYPEID, RELATIVEPATH, FILESTRUCTINFO, HOUSEID FROM MEDIAFILE WHERE HOUSEID = :houseId }; +// #sql [context] iter = { SELECT ID, MEDIAID, STOREID, FILETYPEID, RELATIVEPATH, FILESTRUCTINFO, HOUSEID, FILESIZE FROM MEDIAFILE WHERE HOUSEID = :houseId }; // ************************************************************ { @@ -461,7 +474,7 @@ public class MediaFileDAO extends EntityBaseDAO { // ************************************************************ -/*@lineinfo:user-code*//*@lineinfo:122^145*/ +/*@lineinfo:user-code*//*@lineinfo:125^155*/ return iter; } diff --git a/server/user.jobengine.osgi.db/generated/user/jobengine/db/MediaFileDAO_SJProfile0.ser b/server/user.jobengine.osgi.db/generated/user/jobengine/db/MediaFileDAO_SJProfile0.ser index 6704899322e26ae4105b229cca32e422a535ff33..2c428e03f838590042e4725b283109631204bdcf 100644 GIT binary patch delta 537 zcmX@Fa7t+d4wdNT|D&4P@f%#1pd(^=jzmP`&~wP)m*Jds^|@>>Bps`;O6P$8tfV6IysL+Y;qiz&}2S#c1GjLeSC_Hm6I*l6&N`t zU*tP7c_Ot4qw6Ft@yY#MX^bJ0 zxWpMbCi8LMQ|@A5U|{_J|NrkohB^k>5(cLYSjZsB5r-#^i^*;*;O;$}pBs;!>Qf f!35#Mjmb$C=}5{B@+OgU}~oT diff --git a/server/user.jobengine.osgi.db/generated/user/jobengine/db/MetadataDAO_SJProfile0.ser b/server/user.jobengine.osgi.db/generated/user/jobengine/db/MetadataDAO_SJProfile0.ser index 3d961db881496b1ac41fe10db7dd0f482ba979a8..64adbf787d02eaef52b1432429839d59da12488f 100644 GIT binary patch delta 18 Zcmca@a@%AB4wdNT`+&4P?xk^n(x1;GFS delta 18 Zcmca@a@%AB4wdNT`~&4P?`xd1ra1%&_r delta 18 ZcmZ1{zD|4t4qepGw|4wdNT{(&4P?uxBxtU1=|1s delta 18 ZcmX>qepGw|4wdNYgQ&4P@P+yFrL1=9ck delta 18 ZcmaDQ@k(L?4=1-JkJ diff --git a/server/user.jobengine.osgi.db/generated/user/jobengine/db/SceneContentDAO_SJProfile0.ser b/server/user.jobengine.osgi.db/generated/user/jobengine/db/SceneContentDAO_SJProfile0.ser index 6d49a6a5fa9f2f382984f4ab6ca0ee6b8f8daa19..66e8bc166d7710edfdab57330d3cd06ef51a0786 100644 GIT binary patch delta 18 ZcmdlWwLxkF4wdNYfR&4P^bJODY41wQ}) delta 18 ZcmdlWwLxkF4wdNYf<&4P?QTmU!(1(W~) delta 18 ZcmbO$K39AL4heL{Kz4wdNYg3n*|xS^8f%p5C${= delta 18 ZcmX>heL{Kz4q0S1}Fdk diff --git a/server/user.jobengine.osgi.db/generated/user/jobengine/db/ShotDAO_SJProfile0.ser b/server/user.jobengine.osgi.db/generated/user/jobengine/db/ShotDAO_SJProfile0.ser index 720879023ef0489b45e0c559145864663352a3b8..fcd3288c07f3d85766cf3b2c6bf4355211b97357 100644 GIT binary patch delta 18 ZcmbO)JzshQ4wdNYf)n*|yBcmO%*1=9ck delta 18 ZcmbO)JzshQ4wdNYfyn*|xYxdA~-1`7ZH delta 18 Zcmca3aYteU4wdNYf2n*|x01pzu|1?&I- delta 18 ZcmbQDIz@E@4#wJ1ls@r diff --git a/server/user.jobengine.osgi.db/generated/user/jobengine/db/UserInfoDAO_SJProfile0.ser b/server/user.jobengine.osgi.db/generated/user/jobengine/db/UserInfoDAO_SJProfile0.ser index 6111df5c45d03d4efa20fe18d989bba3b804f347..e41595b05947406e0c477cd2a8a746997b9b2e4f 100644 GIT binary patch delta 18 ZcmdlgvsGpT4wdNYfMn*|wFcmX|G1#@61>^t# delta 18 ZcmZovZB*UB!^m1>%hjQ=S&*?n5CAZn1ik getAll(IDAOIterProvider provider) { + List result = null; + DefaultContext context = manager.getDbContext(); + try { + result = getAll(context, provider); + } catch (Exception e) { + throw new ItemManagerException(e); + } finally { + manager.putDbContext(context); + } + return result; + } @Override public IEntityBase get(IDAOIterProvider provider) { @@ -147,6 +161,20 @@ public abstract class EntityBaseDAO implements IEntityBaseDAO { return entity; } + public List getAll(DefaultContext context, IDAOIterProvider provider) { + manager.traceIn(); + List result = null; + try { + ResultSetIterImpl iter = provider.get(context, this); + checkNull(iter, ResultSetIterImpl.class); + result = getList(context, iter, false, true); + } catch (Exception e) { + throw new ItemManagerException(e); + } + manager.traceOut(); + return result; + } + public List getAll(DefaultContext context) { manager.traceIn(); List result = null; diff --git a/server/user.jobengine.osgi.db/src/user/jobengine/db/IEntityBaseDAO.java b/server/user.jobengine.osgi.db/src/user/jobengine/db/IEntityBaseDAO.java index fb1f94d8..037914dd 100644 --- a/server/user.jobengine.osgi.db/src/user/jobengine/db/IEntityBaseDAO.java +++ b/server/user.jobengine.osgi.db/src/user/jobengine/db/IEntityBaseDAO.java @@ -15,6 +15,8 @@ public interface IEntityBaseDAO { List getAll(long id); + List getAll(IDAOIterProvider provider); + void merge(IEntityBase entity); void modify(IEntityBase entity); diff --git a/server/user.jobengine.osgi.db/src/user/jobengine/db/IItemManager.java b/server/user.jobengine.osgi.db/src/user/jobengine/db/IItemManager.java index ec8c788e..18ac3b28 100644 --- a/server/user.jobengine.osgi.db/src/user/jobengine/db/IItemManager.java +++ b/server/user.jobengine.osgi.db/src/user/jobengine/db/IItemManager.java @@ -13,6 +13,7 @@ import sqlj.runtime.ref.DefaultContext; import user.commons.BaseType; import user.commons.IEntityBase; import user.commons.IEntityPersister; +import user.commons.IJob; import user.commons.Job; import user.commons.StoreUri; import user.commons.remotestore.RemoteStoreProtocol; @@ -218,6 +219,8 @@ public interface IItemManager extends IEntityPersister { */ List getItemTypes(); + List getJobsHistory(String related); + /** * Azonosító alapján elkér egy Verzió objektumot. * @@ -321,6 +324,8 @@ public interface IItemManager extends IEntityPersister { */ Store getSystemStore(boolean lowres); + List getTargetStores(); + /** * Ha a bemeneti paraméter alapján létezik ilyen felhasználó, akkor true-val tér vissza. * diff --git a/server/user.jobengine.osgi.db/src/user/jobengine/db/ItemManager.java b/server/user.jobengine.osgi.db/src/user/jobengine/db/ItemManager.java index 52c4849f..2ee4361b 100644 --- a/server/user.jobengine.osgi.db/src/user/jobengine/db/ItemManager.java +++ b/server/user.jobengine.osgi.db/src/user/jobengine/db/ItemManager.java @@ -29,6 +29,7 @@ import sqlj.runtime.ref.ResultSetIterImpl; import user.commons.BaseType; import user.commons.CalendarUtils; import user.commons.IEntityBase; +import user.commons.IJob; import user.commons.Job; import user.commons.ListUtils; import user.commons.StoreUri; @@ -824,6 +825,21 @@ public class ItemManager extends MemoryCache implements IItemManager { return result; } + @SuppressWarnings("unchecked") + @Override + public List getJobsHistory(String related) { + IEntityBaseDAO daoBase = getBaseDAO(Job.class); + return (List) (List) daoBase.getAll((context, dao) -> { + ResultSetIterImpl result = null; + try { + result = ((JobDAO) dao).selectByRelated(context, related); + } catch (SQLException e) { + logger.error(e.getMessage()); + } + return result; + }); + } + long getLastId(Statement st) throws SQLException { traceIn(); long id = 0; @@ -972,6 +988,20 @@ public class ItemManager extends MemoryCache implements IItemManager { return result; } + @SuppressWarnings("unchecked") + @Override + public List getTargetStores() { + StoreDAO dao = (StoreDAO) getBaseDAO(Store.class); + List stores = (List) (List) dao.getAll(); + List result = new ArrayList<>(); + for (Store store : stores) { + if (store.isSystem() || !store.hasTargetStoreUri()) + continue; + result.add(store); + } + return result; + } + @Override public boolean getUser(String userName, String password) { IEntityBase entity = getUserInfo(userName, password); diff --git a/server/user.jobengine.osgi.db/src/user/jobengine/db/JobDAO.sqlj b/server/user.jobengine.osgi.db/src/user/jobengine/db/JobDAO.sqlj index b0bcd13f..924be001 100644 --- a/server/user.jobengine.osgi.db/src/user/jobengine/db/JobDAO.sqlj +++ b/server/user.jobengine.osgi.db/src/user/jobengine/db/JobDAO.sqlj @@ -41,6 +41,7 @@ class JobDAO extends EntityBaseDAO { entity.setFinished(iterator.finished()); entity.setTemplate(iterator.template()); entity.setScheduledTime(iterator.scheduledTime()); + entity.setRelated(iterator.related()); if (result == null) result = new ArrayList(); result.add(entity); @@ -59,14 +60,20 @@ class JobDAO extends EntityBaseDAO { @Override protected ResultSetIterImpl selectByKey(DefaultContext context, long id) throws SQLException{ JobIter iter = null; - #sql [context] iter = { SELECT ID, NAME, OWNER, PRIORITY, PROGRESS, STATUS, DESCRIPTION, SUBMITTED, FINISHED, TEMPLATE, SCHEDULEDTIME FROM JOB WHERE ID = :id }; + #sql [context] iter = { SELECT ID, NAME, OWNER, PRIORITY, PROGRESS, STATUS, DESCRIPTION, SUBMITTED, FINISHED, TEMPLATE, SCHEDULEDTIME, RELATED FROM JOB WHERE ID = :id }; return iter; } @Override protected ResultSetIterImpl selectAll(DefaultContext context) throws SQLException{ JobIter iter = null; - #sql [context] iter = { SELECT ID, NAME, OWNER, PRIORITY, PROGRESS, STATUS, DESCRIPTION, SUBMITTED, FINISHED, TEMPLATE, SCHEDULEDTIME FROM JOB }; + #sql [context] iter = { SELECT ID, NAME, OWNER, PRIORITY, PROGRESS, STATUS, DESCRIPTION, SUBMITTED, FINISHED, TEMPLATE, SCHEDULEDTIME, RELATED FROM JOB }; + return iter; + } + + public ResultSetIterImpl selectByRelated(DefaultContext context, String related) throws SQLException{ + JobIter iter = null; + #sql [context] iter = { SELECT ID, NAME, OWNER, PRIORITY, PROGRESS, STATUS, DESCRIPTION, SUBMITTED, FINISHED, TEMPLATE, SCHEDULEDTIME, RELATED FROM JOB WHERE LOOKUP(RELATED, :related) > 0 }; return iter; } @@ -94,8 +101,9 @@ class JobDAO extends EntityBaseDAO { Timestamp finished = obj.getFinished(); String template = obj.getTemplate(); Timestamp scheduledTime = obj.getScheduledTime(); - - #sql [context] { UPDATE JOB SET NAME = :name, OWNER = :owner, PRIORITY = :priority, PROGRESS = :progress, STATUS = :status, DESCRIPTION = :description, SUBMITTED = :submitted, FINISHED = :finished, TEMPLATE = :template, SCHEDULEDTIME = :scheduledTime WHERE ID = :id }; + String related = obj.getRelated(); + + #sql [context] { UPDATE JOB SET NAME = :name, OWNER = :owner, PRIORITY = :priority, PROGRESS = :progress, STATUS = :status, DESCRIPTION = :description, SUBMITTED = :submitted, FINISHED = :finished, TEMPLATE = :template, SCHEDULEDTIME = :scheduledTime, RELATED = :related WHERE ID = :id }; } @Override @@ -111,9 +119,10 @@ class JobDAO extends EntityBaseDAO { Timestamp finished = obj.getFinished(); String template = obj.getTemplate(); Timestamp scheduledTime = obj.getScheduledTime(); + String related = obj.getRelated(); - #sql [context] { INSERT INTO JOB (NAME, OWNER, PRIORITY, PROGRESS, STATUS, DESCRIPTION, SUBMITTED, FINISHED, TEMPLATE, SCHEDULEDTIME) - VALUES (:name, :owner, :priority, :progress, :status, :description, :submitted, :finished, :template, :scheduledTime) }; + #sql [context] { INSERT INTO JOB (NAME, OWNER, PRIORITY, PROGRESS, STATUS, DESCRIPTION, SUBMITTED, FINISHED, TEMPLATE, SCHEDULEDTIME, RELATED) + VALUES (:name, :owner, :priority, :progress, :status, :description, :submitted, :finished, :template, :scheduledTime, :related) }; } public List getAllIncomplete(String template) { @@ -123,7 +132,7 @@ class JobDAO extends EntityBaseDAO { try { JobIter iter = null; //ResultSetIterImpl iter = null; - #sql [context] iter = { SELECT ID, NAME, OWNER, PRIORITY, PROGRESS, STATUS, DESCRIPTION, SUBMITTED, FINISHED, TEMPLATE, SCHEDULEDTIME + #sql [context] iter = { SELECT ID, NAME, OWNER, PRIORITY, PROGRESS, STATUS, DESCRIPTION, SUBMITTED, FINISHED, TEMPLATE, SCHEDULEDTIME, RELATED FROM JOB WHERE TEMPLATE = :template AND STATUS IN ('EXECUTING', 'WAIT_EXECUTOR', 'WAIT_SUSPEND', 'RUNABLE')}; result = getList(context, iter, false); diff --git a/server/user.jobengine.osgi.db/src/user/jobengine/db/JobIter.sqlj b/server/user.jobengine.osgi.db/src/user/jobengine/db/JobIter.sqlj index bee2d520..b3952393 100644 --- a/server/user.jobengine.osgi.db/src/user/jobengine/db/JobIter.sqlj +++ b/server/user.jobengine.osgi.db/src/user/jobengine/db/JobIter.sqlj @@ -2,4 +2,4 @@ package user.jobengine.db; import java.sql.Timestamp; -#sql public iterator JobIter(long id, String name, String owner, int priority, int progress, String status, String description, Timestamp submitted, Timestamp finished, String template, Timestamp scheduledTime); +#sql public iterator JobIter(long id, String name, String owner, int priority, int progress, String status, String description, Timestamp submitted, Timestamp finished, String template, Timestamp scheduledTime, String related); diff --git a/server/user.jobengine.osgi.db/src/user/jobengine/db/MediaFile.java b/server/user.jobengine.osgi.db/src/user/jobengine/db/MediaFile.java index 2fe834c5..11b373f0 100644 --- a/server/user.jobengine.osgi.db/src/user/jobengine/db/MediaFile.java +++ b/server/user.jobengine.osgi.db/src/user/jobengine/db/MediaFile.java @@ -15,6 +15,7 @@ public class MediaFile extends EntityBase implements Serializable { private String relativePath = null; private Store store = null; private long storeId = 0; + private long fileSize = 0; private String houseId = null; public String getFileStructInfo() { @@ -108,4 +109,12 @@ public class MediaFile extends EntityBase implements Serializable { this.storeId = id; } + public long getFileSize() { + return fileSize; + } + + public void setFileSize(long fileSize) { + this.fileSize = fileSize; + } + } \ No newline at end of file diff --git a/server/user.jobengine.osgi.db/src/user/jobengine/db/MediaFileDAO.sqlj b/server/user.jobengine.osgi.db/src/user/jobengine/db/MediaFileDAO.sqlj index da5b04f3..1d5f3c15 100644 --- a/server/user.jobengine.osgi.db/src/user/jobengine/db/MediaFileDAO.sqlj +++ b/server/user.jobengine.osgi.db/src/user/jobengine/db/MediaFileDAO.sqlj @@ -6,7 +6,7 @@ import java.sql.SQLException; import java.util.ArrayList; import java.util.List; -#sql iterator MediaFileIter(long id, long mediaId, long storeId, long fileTypeId, String relativePath, String fileStructInfo, String houseId); +#sql iterator MediaFileIter(long id, long mediaId, long storeId, long fileTypeId, String relativePath, String fileStructInfo, String houseId, long fileSize); @SuppressWarnings("unused") public class MediaFileDAO extends EntityBaseDAO { @@ -28,6 +28,7 @@ public class MediaFileDAO extends EntityBaseDAO { entity.setRelativePath(iterator.relativePath()); entity.setFileStructInfo(iterator.fileStructInfo()); entity.setHouseId(iterator.houseId()); + entity.setFileSize(iterator.fileSize()); if (result == null) result = new ArrayList(); @@ -40,21 +41,21 @@ public class MediaFileDAO extends EntityBaseDAO { @Override protected ResultSetIterImpl selectByKey(DefaultContext context, long id) throws SQLException{ MediaFileIter iter = null; - #sql [context] iter = { SELECT ID, MEDIAID, STOREID, FILETYPEID, RELATIVEPATH, FILESTRUCTINFO, HOUSEID FROM MEDIAFILE WHERE ID = :id }; + #sql [context] iter = { SELECT ID, MEDIAID, STOREID, FILETYPEID, RELATIVEPATH, FILESTRUCTINFO, HOUSEID, FILESIZE FROM MEDIAFILE WHERE ID = :id }; return iter; } @Override protected ResultSetIterImpl selectByForeignKey(DefaultContext context, long id) throws SQLException{ MediaFileIter iter = null; - #sql [context] iter = { SELECT ID, MEDIAID, STOREID, FILETYPEID, RELATIVEPATH, FILESTRUCTINFO, HOUSEID FROM MEDIAFILE WHERE MEDIAID = :id }; + #sql [context] iter = { SELECT ID, MEDIAID, STOREID, FILETYPEID, RELATIVEPATH, FILESTRUCTINFO, HOUSEID, FILESIZE FROM MEDIAFILE WHERE MEDIAID = :id }; return iter; } @Override protected ResultSetIterImpl selectAll(DefaultContext context) throws SQLException{ MediaFileIter iter = null; - #sql [context] iter = { SELECT ID, MEDIAID, STOREID, FILETYPEID, RELATIVEPATH, FILESTRUCTINFO, HOUSEID FROM MEDIAFILE }; + #sql [context] iter = { SELECT ID, MEDIAID, STOREID, FILETYPEID, RELATIVEPATH, FILESTRUCTINFO, HOUSEID, FILESIZE FROM MEDIAFILE }; return iter; } @@ -78,8 +79,9 @@ public class MediaFileDAO extends EntityBaseDAO { String relativePath = obj.getRelativePath(); String fileStructInfo = obj.getFileStructInfo(); String houseId = obj.getHouseId(); + long fileSize = obj.getFileSize(); - #sql [context] { UPDATE MEDIAFILE SET MEDIAID = :mediaId, STOREID = :storeId, FILETYPEID = :fileTypeId, RELATIVEPATH = :relativePath, FILESTRUCTINFO = :fileStructInfo, HOUSEID = :houseId WHERE ID = :id }; + #sql [context] { UPDATE MEDIAFILE SET MEDIAID = :mediaId, STOREID = :storeId, FILETYPEID = :fileTypeId, RELATIVEPATH = :relativePath, FILESTRUCTINFO = :fileStructInfo, HOUSEID = :houseId, FILESIZE = :fileSize WHERE ID = :id }; } @Override @@ -91,8 +93,9 @@ public class MediaFileDAO extends EntityBaseDAO { String relativePath = obj.getRelativePath(); String fileStructInfo = obj.getFileStructInfo(); String houseId = obj.getHouseId(); + long fileSize = obj.getFileSize(); - #sql [context] { INSERT INTO MEDIAFILE (MEDIAID, STOREID, FILETYPEID, RELATIVEPATH, FILESTRUCTINFO, HOUSEID) VALUES (:mediaId, :storeId, :fileTypeId, :relativePath, :fileStructInfo, :houseId) }; + #sql [context] { INSERT INTO MEDIAFILE (MEDIAID, STOREID, FILETYPEID, RELATIVEPATH, FILESTRUCTINFO, HOUSEID, FILESIZE) VALUES (:mediaId, :storeId, :fileTypeId, :relativePath, :fileStructInfo, :houseId, :fileSize) }; } void addAll(DefaultContext context, IEntityBase entity) throws SQLException { @@ -119,7 +122,7 @@ public class MediaFileDAO extends EntityBaseDAO { private MediaFileIter selectByHouseId(DefaultContext context, String houseId) throws SQLException{ MediaFileIter iter = null; - #sql [context] iter = { SELECT ID, MEDIAID, STOREID, FILETYPEID, RELATIVEPATH, FILESTRUCTINFO, HOUSEID FROM MEDIAFILE WHERE HOUSEID = :houseId }; + #sql [context] iter = { SELECT ID, MEDIAID, STOREID, FILETYPEID, RELATIVEPATH, FILESTRUCTINFO, HOUSEID, FILESIZE FROM MEDIAFILE WHERE HOUSEID = :houseId }; return iter; } diff --git a/server/user.jobengine.osgi.db/src/user/jobengine/db/Store.java b/server/user.jobengine.osgi.db/src/user/jobengine/db/Store.java index ee580d3e..60a85964 100644 --- a/server/user.jobengine.osgi.db/src/user/jobengine/db/Store.java +++ b/server/user.jobengine.osgi.db/src/user/jobengine/db/Store.java @@ -65,6 +65,18 @@ public class Store extends EntityBase implements Serializable { return this.storeUris; } + public StoreUri getTargetStoreUri() { + StoreUri result = null; + List uris = getStoreUris(); + for (StoreUri uri : uris) { + if (uri.isTarget()) { + result = uri; + break; + } + } + return result; + } + public StoreUri getTargetStoreUri(RemoteStoreProtocol protocol) { StoreUri result = null; List uris = getStoreUris(); @@ -79,6 +91,18 @@ public class Store extends EntityBase implements Serializable { return result; } + public boolean hasTargetStoreUri() { + boolean result = false; + List uris = getStoreUris(); + for (StoreUri uri : uris) { + if (uri.isTarget()) { + result = true; + break; + } + } + return result; + } + public boolean isLowres() { return isLowres; } @@ -102,4 +126,5 @@ public class Store extends EntityBase implements Serializable { public void setSystem(boolean isSystem) { this.isSystem = isSystem; } + } \ No newline at end of file diff --git a/server/user.jobengine.osgi.server/pages/access-denied.zul b/server/user.jobengine.osgi.server/pages/access-denied.zul new file mode 100644 index 00000000..27b97949 --- /dev/null +++ b/server/user.jobengine.osgi.server/pages/access-denied.zul @@ -0,0 +1,12 @@ + + + + + +