public int updateFileSystemObject(Vector<Object> data) throws SoSimException {
    	// Update any file system item
    	FolderItem folder;
    	if (selectedObject.isFolder()) folder = selectedObject.getParent();
    	else folder = selectedObject.getFolder();
    	
    	if (selectedObject.getParent() == null) throw new SoSimException("fs_04"); // Can't update root
    	if (".".equals(selectedObject.getName()) ||
    			"..".equals(selectedObject.getName())) throw new SoSimException("fs_03");
    	if (!selectedObject.getName().equals(data.get(0).toString())) {
    		if (folder.getChildByName(data.get(0).toString()) != null) throw new SoSimException("fs_02");
    	}

    	if (selectedObject.isFile()) {
    		int newSize = ((Integer) data.get(1)).intValue();
    		
   			if (!(algorithm.checkMoreAvailableDisk(device, newSize, selectedObject))) throw new SoSimException("fs_01");
    			   			
   			((FileItem) selectedObject).setSize((Integer) data.get(1));
   			
   			algorithm.updatesObject(selectedObject, device); // Updates device
    		
    		((FileItem) selectedObject).setColor((Color) data.get(2));
    	}
    	
    	if (selectedObject.isLink()) {
    		
    		/* Desactivated target modification
    		LogicalFSObject target, oldTarget;
    		Integer targetId = (Integer) data.get(1);
    		target = getByID(root, targetId);
    		if (target.getId() == selectedObject.getId()) throw new SoSimException("fs_12"); // Itself
    		
    		oldTarget = ((LinkItem) selectedObject).getTarget();
    		if (!oldTarget.equals(target)) { // change target
        		int id = selectedObject.getId();
        		oldTarget.removeLink((LinkItem) selectedObject); 
        		selectedObject.getFolder().removeChild(selectedObject);
        		addLink(id, data);
        		selectedObject = this.getByID(root, id);
    		}
    		*/
    	}
    	
    	selectedObject.setName(data.get(0).toString());
    	return selectedObject.getId();
    }