/** * Constructs a {@link RepositoryFileResource} based on a {@link Repository} * and a qualified path for the file * * @param repo * @param qualifiedPath */ public RepositoryFileResource(final Repository repo, final String qualifiedPath) { _qualifiedPath = qualifiedPath; final RepositoryFile file = (RepositoryFile) repo.getRepositoryNode(qualifiedPath); if (file == null) { logger.warn("Repository node did not exist: {}", qualifiedPath); } _fileRef = new SerializableRef<>(file); }
@Override public boolean removeTimeline(TimelineIdentifier timeline) { if (timeline == null) { return false; } final String path = timeline.getPath(); final RepositoryNode node = _repository.getRepositoryNode(path); if (node == null) { return false; } try { node.delete(); } catch (IllegalStateException e) { logger.warn("Attempt to delete node failed: " + node, e); return false; } return true; }
@Override public TimelineDefinition getTimelineDefinition(TimelineIdentifier timeline) { final String path = timeline.getPath(); logger.info("Reading timeline from file: {}", path); final RepositoryFile timelineNode = (RepositoryFile) _repository.getRepositoryNode(path); if (timelineNode == null) { throw new IllegalArgumentException("No such timeline: " + timeline.getName() + " (in group: " + timeline.getGroup() + ")"); } final TimelineDefinition timelineDefinition = timelineNode .readFile(new Func<InputStream, TimelineDefinition>() { @Override public TimelineDefinition eval(InputStream in) { final TimelineReader reader = new JaxbTimelineReader(); final TimelineDefinition timelineDefinition = reader.read(in); return timelineDefinition; } }); return timelineDefinition; }
@Override public TimelineIdentifier updateTimeline(TimelineIdentifier identifier, TimelineDefinition definition) { final RepositoryFile file = (RepositoryFile) _repository.getRepositoryNode(identifier.getPath()); file.writeFile(new WriteTimelineAction(definition)); logger.info("Updated timeline definition in file: {}", file); return new TimelineIdentifier(identifier.getName(), file.getQualifiedPath(), identifier.getGroup()); }