/** * Everything except project and library */ private Snapshot persistFileOrDirectory(Project project, Resource resource, @Nullable Resource parentReference) { BatchResource moduleResource = resourceCache.get(project.getEffectiveKey()); Integer moduleId = moduleResource.resource().getId(); ResourceModel model = findOrCreateModel(resource, parentReference != null ? parentReference : project); model.setRootId(moduleId); model = session.save(model); resource.setId(model.getId()); resource.setUuid(model.getUuid()); Snapshot parentSnapshot; if (parentReference != null) { parentSnapshot = resourceCache.get(parentReference.getEffectiveKey()).snapshot(); } else { parentSnapshot = moduleResource.snapshot(); } Snapshot snapshot = new Snapshot(model, parentSnapshot); snapshot.setBuildDateMs(System.currentTimeMillis()); snapshot = session.save(snapshot); session.commit(); return snapshot; }