Search in sources :

Example 11 with Entry

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));
}
Also used : UpdatedFileInfo(org.netbeans.lib.cvsclient.command.update.UpdatedFileInfo) Entry(org.netbeans.lib.cvsclient.admin.Entry) Charset(java.nio.charset.Charset) IAdminWriter(org.netbeans.lib.cvsclient.admin.IAdminWriter)

Example 12 with 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;
}
Also used : Entry(org.netbeans.lib.cvsclient.admin.Entry) IOException(java.io.IOException) EntriesHandler(org.netbeans.lib.cvsclient.admin.EntriesHandler)

Example 13 with Entry

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);
}
Also used : VirtualFile(com.intellij.openapi.vfs.VirtualFile) VirtualFileEntry(com.intellij.cvsSupport2.checkinProject.VirtualFileEntry) Entry(org.netbeans.lib.cvsclient.admin.Entry) VcsRevisionNumber(com.intellij.openapi.vcs.history.VcsRevisionNumber)

Example 14 with 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;
}
Also used : VirtualFile(com.intellij.openapi.vfs.VirtualFile) VirtualFileEntry(com.intellij.cvsSupport2.checkinProject.VirtualFileEntry) Entry(org.netbeans.lib.cvsclient.admin.Entry) FileRevisionTimestampComparator(com.intellij.history.FileRevisionTimestampComparator) Nullable(org.jetbrains.annotations.Nullable)

Example 15 with Entry

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;
}
Also used : VirtualFile(com.intellij.openapi.vfs.VirtualFile) VirtualFileEntry(com.intellij.cvsSupport2.checkinProject.VirtualFileEntry) Entry(org.netbeans.lib.cvsclient.admin.Entry) HashMap(com.intellij.util.containers.HashMap) VirtualFileEntry(com.intellij.cvsSupport2.checkinProject.VirtualFileEntry) CvsInfo(com.intellij.cvsSupport2.application.CvsInfo) DirectoryContent(com.intellij.cvsSupport2.checkinProject.DirectoryContent)

Aggregations

Entry (org.netbeans.lib.cvsclient.admin.Entry)24 VirtualFile (com.intellij.openapi.vfs.VirtualFile)13 File (java.io.File)8 VirtualFileEntry (com.intellij.cvsSupport2.checkinProject.VirtualFileEntry)5 IOException (java.io.IOException)5 CvsEntriesManager (com.intellij.cvsSupport2.application.CvsEntriesManager)2 CvsInfo (com.intellij.cvsSupport2.application.CvsInfo)2 DirectoryContent (com.intellij.cvsSupport2.checkinProject.DirectoryContent)2 VcsException (com.intellij.openapi.vcs.VcsException)2 EntriesHandler (org.netbeans.lib.cvsclient.admin.EntriesHandler)2 DirectoryObject (org.netbeans.lib.cvsclient.file.DirectoryObject)2 CvsLightweightFile (com.intellij.cvsSupport2.actions.cvsContext.CvsLightweightFile)1 CheckoutFileOperation (com.intellij.cvsSupport2.cvsoperations.cvsCheckOut.CheckoutFileOperation)1 SimpleRevision (com.intellij.cvsSupport2.cvsoperations.dateOrRevision.SimpleRevision)1 CvsRevisionNumber (com.intellij.cvsSupport2.history.CvsRevisionNumber)1 FileRevisionTimestampComparator (com.intellij.history.FileRevisionTimestampComparator)1 ItemLatestState (com.intellij.openapi.vcs.diff.ItemLatestState)1 VcsRevisionNumber (com.intellij.openapi.vcs.history.VcsRevisionNumber)1 MergeData (com.intellij.openapi.vcs.merge.MergeData)1 HashMap (com.intellij.util.containers.HashMap)1