protected OriginalFile addOrReplace(Session session, SqlAction sqlAction, ServiceFactory sf, final RepoFile repoFile, final Long old) { if (old != null) { unregister(old, sqlAction); log.info("Unregistered " + old); } OriginalFile ofile = new OriginalFile(); return update(session, repoFile, sqlAction, sf, ofile); }
/** * Given the current files on disk, {@link #unregister(Long, SqlAction)} * all files which have been removed from disk. */ public long removeMissingFilesFromDb(SqlAction sqlAction, Session session, List<OriginalFile> filesOnDisk) { List<Long> idsInDb = idsInDb(sqlAction); if (idsInDb.size() != filesOnDisk.size()) { log.info(String.format( "Script missing from disk: %s in db, %s on disk!", idsInDb.size(), filesOnDisk.size())); } Set<Long> setInDb = new HashSet<Long>(); Set<Long> setOnDisk = new HashSet<Long>(); setInDb.addAll(idsInDb); for (OriginalFile f : filesOnDisk) { setOnDisk.add(f.getId()); } // Now contains only those which are missing setInDb.removeAll(setOnDisk); for (Long l : setInDb) { if (readOnly.isReadOnlyDb()) { log.info("read-only database so ignoring missing script ID {}", l); } else { unregister(l, sqlAction); } } return setInDb.size(); }