use of org.netbeans.lib.cvsclient.admin.Entry in project intellij-community by JetBrains.
the class DefaultResponseHandler method processUpdatedMergedResponse.
// Utils ==================================================================
private static void processUpdatedMergedResponse(IClientEnvironment clientEnvironment, String relativeLocalDirectory, String repositoryFilePath, String entryLine, IResponseServices responseServices, String mode, int fileLength, IConnectionStreams connectionStreams, boolean merged) throws IOException {
final ICvsFileSystem cvsFileSystem = clientEnvironment.getCvsFileSystem();
final FileObject fileObject = cvsFileSystem.getFileObject(relativeLocalDirectory, repositoryFilePath);
final Entry entry = Entry.createEntryForLine(entryLine);
final ILocalFileWriter localFileWriter = clientEnvironment.getLocalFileWriter();
localFileWriter.setNextFileDate(responseServices.getNextFileDate());
// TODO: really???
localFileWriter.setNextFileMode(mode);
final boolean binary = entry.isBinary();
final boolean readOnly = FileUtils.isReadOnlyMode(mode);
final Charset charSet = entry.isUnicode() ? Charset.forName("UTF-16LE") : null;
writeFile(fileObject, fileLength, connectionStreams.getInputStream(), connectionStreams.getReaderFactory(), binary, readOnly, clientEnvironment, charSet);
updateEntriesFileTime(fileObject, entry, cvsFileSystem, merged);
final IAdminWriter adminWriter = clientEnvironment.getAdminWriter();
adminWriter.ensureCvsDirectory(fileObject.getParent(), repositoryFilePath, clientEnvironment.getCvsRoot(), cvsFileSystem);
adminWriter.setEntry(fileObject.getParent(), entry, cvsFileSystem);
responseServices.getEventSender().notifyEntryListeners(fileObject, entry);
responseServices.getEventSender().notifyFileInfoListeners(new UpdatedFileInfo(fileObject, cvsFileSystem.getLocalFileSystem().getFile(fileObject), merged ? UpdatedFileInfo.UpdatedType.MERGED : UpdatedFileInfo.UpdatedType.UPDATED, entry));
}
use of org.netbeans.lib.cvsclient.admin.Entry in project intellij-community by JetBrains.
the class IOFilesBasedDirectoryPruner method containsFileEntries.
private boolean containsFileEntries(final File file) {
final EntriesHandler entriesHandler = new EntriesHandler(file);
try {
entriesHandler.read(myCharset);
} catch (IOException e) {
return false;
}
final Collection<Entry> entries = entriesHandler.getEntries().getEntries();
for (final Entry entry : entries) {
if (!entry.isDirectory())
return true;
}
return false;
}
use of org.netbeans.lib.cvsclient.admin.Entry in project intellij-community by JetBrains.
the class CvsChangeProvider method processFile.
private void processFile(final FilePath filePath, final ChangelistBuilder builder, final ProgressIndicator progress) throws VcsException {
final VirtualFile dir = filePath.getVirtualFileParent();
if (dir == null)
return;
final Entry entry = myEntriesManager.getEntryFor(dir, filePath.getName());
final FileStatus status = CvsStatusProvider.getStatus(filePath.getVirtualFile(), entry);
final VcsRevisionNumber number = entry != null ? createRevisionNumber(entry.getRevision(), status) : VcsRevisionNumber.NULL;
processStatus(filePath, dir.findChild(filePath.getName()), status, number, builder);
progress.checkCanceled();
checkSwitchedFile(filePath, builder, dir, entry);
}
use of org.netbeans.lib.cvsclient.admin.Entry in project intellij-community by JetBrains.
the class CvsChangeProvider method getLastUpToDateContentFor.
@Nullable
public byte[] getLastUpToDateContentFor(@NotNull final VirtualFile f) {
final VirtualFile parent = f.getParent();
final String name = f.getName();
final Entry entry = myEntriesManager.getEntryFor(parent, name);
if (entry != null && entry.isResultOfMerge()) {
// try created by VCS during merge
final byte[] content = CvsUtil.getStoredContentForFile(f, entry.getRevision());
if (content != null) {
return content;
}
// try cached by IDEA in CVS dir
return CvsUtil.getCachedStoredContent(parent, name, entry.getRevision());
}
final long upToDateTimestamp = getUpToDateTimeForFile(f);
final FileRevisionTimestampComparator c = new FileRevisionTimestampComparator() {
@Override
public boolean isSuitable(long revisionTimestamp) {
return CvsStatusProvider.timeStampsAreEqual(upToDateTimestamp, revisionTimestamp);
}
};
final byte[] localHistoryContent = LocalHistory.getInstance().getByteContent(f, c);
if (localHistoryContent == null) {
if (entry != null && CvsUtil.haveCachedContent(f, entry.getRevision())) {
return CvsUtil.getCachedStoredContent(parent, name, entry.getRevision());
}
}
return localHistoryContent;
}
use of org.netbeans.lib.cvsclient.admin.Entry in project intellij-community by JetBrains.
the class CvsChangeProvider method getDirectoryContent.
private static DirectoryContent getDirectoryContent(VirtualFile directory, final ProgressIndicator progress) {
if (LOG.isDebugEnabled()) {
LOG.debug("Retrieving directory content for " + directory);
}
final CvsInfo cvsInfo = CvsEntriesManager.getInstance().getCvsInfoFor(directory);
final DirectoryContent result = new DirectoryContent(cvsInfo);
final HashMap<String, VirtualFile> nameToFileMap = new HashMap<>();
for (VirtualFile child : CvsVfsUtil.getChildrenOf(directory)) {
nameToFileMap.put(child.getName(), child);
}
for (final Entry entry : cvsInfo.getEntries()) {
progress.checkCanceled();
final String fileName = entry.getFileName();
if (entry.isDirectory()) {
if (nameToFileMap.containsKey(fileName)) {
final VirtualFile virtualFile = nameToFileMap.get(fileName);
if (isInContent(virtualFile)) {
result.addDirectory(new VirtualFileEntry(virtualFile, entry));
}
} else if (!entry.isRemoved() && !FileTypeManager.getInstance().isFileIgnored(fileName)) {
result.addDeletedDirectory(entry);
}
} else {
if (nameToFileMap.containsKey(fileName) || entry.isRemoved()) {
final VirtualFile virtualFile = nameToFileMap.get(fileName);
if (isInContent(virtualFile)) {
result.addFile(new VirtualFileEntry(virtualFile, entry));
}
} else if (!entry.isAddedFile()) {
result.addDeletedFile(entry);
}
}
nameToFileMap.remove(fileName);
}
for (final String name : nameToFileMap.keySet()) {
progress.checkCanceled();
final VirtualFile unknown = nameToFileMap.get(name);
if (unknown.isDirectory()) {
if (isInContent(unknown)) {
result.addUnknownDirectory(unknown);
}
} else {
if (isInContent(unknown)) {
final boolean isIgnored = result.getCvsInfo().getIgnoreFilter().shouldBeIgnored(unknown);
if (isIgnored) {
result.addIgnoredFile(unknown);
} else {
result.addUnknownFile(unknown);
}
}
}
}
return result;
}
Aggregations