/plugins/android/src/org/jetbrains/android/compiler/ClassesAndJarsValidityState.java
https://bitbucket.org/nbargnesi/idea · Java · 68 lines · 57 code · 8 blank · 3 comment · 11 complexity · 67ffe2b25777f45217274e5749714002 MD5 · raw file
- package org.jetbrains.android.compiler;
- import com.intellij.compiler.CompilerIOUtil;
- import com.intellij.ide.highlighter.ArchiveFileType;
- import com.intellij.openapi.compiler.ValidityState;
- import com.intellij.openapi.fileTypes.StdFileTypes;
- import com.intellij.openapi.vfs.VirtualFile;
- import com.intellij.util.containers.HashSet;
- import org.jetbrains.annotations.NotNull;
- import java.io.DataInput;
- import java.io.DataOutput;
- import java.io.IOException;
- import java.util.Collection;
- import java.util.HashMap;
- import java.util.Map;
- import java.util.Set;
- /**
- * @author Eugene.Kudelevsky
- */
- class ClassesAndJarsValidityState implements ValidityState {
- private Map<String, Long> myFiles;
- private void fillMap(VirtualFile file, Set<VirtualFile> visited) {
- if (file.isDirectory() && visited.add(file)) {
- for (VirtualFile child : file.getChildren()) {
- fillMap(child, visited);
- }
- }
- else if (StdFileTypes.CLASS.equals(file.getFileType()) || file.getFileType() instanceof ArchiveFileType) {
- if (file.isValid()) {
- myFiles.put(file.getPath(), file.getTimeStamp());
- }
- }
- }
- public ClassesAndJarsValidityState(@NotNull Collection<VirtualFile> files) {
- myFiles = new HashMap<String, Long>();
- Set<VirtualFile> visited = new HashSet<VirtualFile>();
- for (VirtualFile file : files) {
- fillMap(file, visited);
- }
- }
- public ClassesAndJarsValidityState(@NotNull DataInput in) throws IOException {
- myFiles = new HashMap<String, Long>();
- int size = in.readInt();
- while (size-- > 0) {
- final String path = CompilerIOUtil.readString(in);
- final long timestamp = in.readLong();
- myFiles.put(path, timestamp);
- }
- }
- public boolean equalsTo(ValidityState otherState) {
- return otherState instanceof ClassesAndJarsValidityState
- && myFiles.equals(((ClassesAndJarsValidityState)otherState).myFiles);
- }
- public void save(DataOutput out) throws IOException {
- out.writeInt(myFiles.size());
- for (String dependency : myFiles.keySet()) {
- CompilerIOUtil.writeString(dependency, out);
- out.writeLong(myFiles.get(dependency));
- }
- }
- }