Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright 1&1 Internet AG, http://www.1and1.org
   *
   * This program is free software; you can redistribute it and/or modify
   * it under the terms of the GNU Lesser General Public License as published by
   * the Free Software Foundation; either version 2 of the License,
   * or (at your option) any later version.
   *
   * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
 package net.sf.beezle.sushi.fs.memory;
 
 
 import java.util.List;
 import java.util.Map;
 
 public class MemoryRoot implements Root<MemoryNode> {
     public final MemoryFilesystem filesystem;
     public final int id;
     private final Map<StringMemoryNodenodes;
     private final Map<StringObjectstore;
     
     public MemoryRoot(MemoryFilesystem filesystemint id) {
         this. = filesystem;
         this. = id;
         this. = new HashMap<StringMemoryNode>();
         this. = new HashMap<StringObject>();
         add(new MemoryNode(this"".null));
     }
 
     public MemoryFilesystem getFilesystem() {
         return ;
     }
 
     public String getId() {
         return "//" +  + "/";
     }
 
     public MemoryNode node(String pathString encodedQuery) {
         MemoryNode node;
         
         if (encodedQuery != null) {
             throw new IllegalArgumentException(encodedQuery);
         }
         node = .get(path);
         if (node == null) {
             node = new MemoryNode(thispath.null);
             .put(node.getPath(), node);
         }
         return node;
     }
     
     public void add(MemoryNode node) {
         .put(node.getPath(), node);
     }
     
     public long length(String paththrows LengthException {
         Object obj;
 
         obj = .get(path);
         if (obj instanceof FileNode) {
             return ((FileNodeobj).length();
         } else {
             return ((byte[]) obj).length;
         }
     }
     
     public List<MemoryNodelist(String path) {
         String child;
         int idx;
         List<MemoryNoderesult;
         
         result = new ArrayList<MemoryNode>();
         for (MemoryNode node : .values()) {
             child = node.getPath();
             idx = child.lastIndexOf(.);
             if (!path.equals(child) && path.equals(idx == -1 ? "" : child.substring(0, idx))) {
                 if (node.exists()) {
                     result.add(node);
                 }
             }
         }     
        return result;
    }
    
    //--
    
    InputStream open(String paththrows IOException {
        Object obj;
        
        obj = .get(path);
        if (obj instanceof FileNode) {
            return ((FileNodeobj).createInputStream();
        } else {
            return new CheckedByteArrayInputStream((byte[]) obj);
        }
    }
    byte[] readBytes(String paththrows IOException {
        Object obj;
        byte[] bytes;
        obj = .get(path);
        if (obj instanceof FileNode) {
            return ((FileNodeobj).readBytes();
        } else {
            bytes = (byte[]) obj;
            return Arrays.copyOf(bytesbytes.length);
        }
    }
    
    void store(String pathbyte[] dataint usedthrows IOException {
        Object old;
        FileNode file;
        byte[] copy;
        
        old = .get(path);
        if (old instanceof FileNode) {
            ((FileNodeold).delete();
        }
        if (used > .) {
            file = .getWorld().getTemp().createTempFile();
            file.writeBytes(data, 0, usedfalse);
            .put(pathfile);
        } else {
            copy = new byte[used];
            System.arraycopy(data, 0, copy, 0, used);
            .put(pathcopy);
        }
    }
New to GrepCode? Check out our FAQ X