private void createSegmentInformation(Project project, TVAMainType tva) { if (project.getVideo().getAnimations() == null) return; SegmentInformationTableType segmentInformationTable = tvaFactory.createSegmentInformationTableType(); SegmentListType segmentList = tvaFactory.createSegmentListType(); for (Integer frame : project.getVideo().getAnimations().keySet()) { ExtendedSegmentInformationType segmentInformation = activaFactory.createExtendedSegmentInformationType(); segmentInformation.setSegmentId(frame.toString()); boolean hasContent = false; for (Animation animation : project.getVideo().getAnimations().get(frame)) { if (animation.getEntityId() == 0) continue; IEntity entity = entityServices.getByAnimation(animation); if (entity == null) continue; EntityRegionType entityRegion = activaFactory.createEntityRegionType(); // entityRegion.setEntityRef("entity_" + animation.getEntityId()); entityRegion.setEntityRef(addedEntities.get(Long.valueOf(animation.getEntityId()))); RegionLocatorType regionLocator = activaMpeg7Factory.createRegionLocatorType(); if (animation.getKind() == ShapeKind.RECTANGLE) { regionLocator.getBox().add(createBox(project, animation)); } else if (animation.getKind() == ShapeKind.POLYGON) { regionLocator.getPolygon().add(createPolygon(project, animation)); } entityRegion.setRegion(regionLocator); segmentInformation.getEntityRegion().add(entityRegion); hasContent = true; } if (hasContent) segmentList.getSegmentInformation().add(segmentInformation); } segmentInformationTable.setSegmentList(segmentList); tva.getProgramDescription().setSegmentInformationTable(segmentInformationTable); }
private boolean writeModel(Metadata metadata, TVAMainType tva) { try { JAXBContext context = JAXBContext.newInstance("tva.metadata._2011"); Marshaller m = context.createMarshaller(); m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); metadata.getSource().createNewFile(); m.marshal(tvaFactory.createTVAMain(tva), metadata.getSource()); } catch (JAXBException e) { logger.error(e, Messages.ERROR_EXPORTING_TVA); return false; } catch (IOException e) { logger.error(e, Messages.ERROR_EXPORTING_TVA); return false; } return true; }
@Override public boolean saveMetadata(Project project) { if (project == null || project.getMetadata() == null) return false; Metadata metadata = project.getMetadata(); TVAMainType tva = null; if (metadata.getContent() == null) { tva = tvaFactory.createTVAMainType(); } else { tva = (TVAMainType) metadata.getContent(); } if (tva.getProgramDescription() == null) tva.setProgramDescription(activaFactory.createExtendedProgramDescriptionType()); createProgramInformation(project, tva); createEntityInformation(project, tva); createSegmentInformation(project, tva); return writeModel(metadata, tva); }
private void createProgramInformation(Project project, TVAMainType tva) { ProgramInformationTableType programInformationTable = tvaFactory.createProgramInformationTableType(); tva.getProgramDescription().setProgramInformationTable(programInformationTable); }