/*
* File : LibraryManagerElement.java
* Created : 17-jun-2002 18:04
* By : fbusquets
*
* JClic - Authoring and playing system for educational activities
*
* Copyright (C) 2000 - 2005 Francesc Busquets & Departament
* d'Educacio de la Generalitat de Catalunya
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU 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 General Public License for more details (see the LICENSE file).
*/
package edu.xtec.jclic.project;
import edu.xtec.util.Domable;
import edu.xtec.util.JDomUtility;
import edu.xtec.util.Options;
/**
*
* @author Francesc Busquets (fbusquets@xtec.cat)
* @version 13.08.29
*/
public class LibraryManagerElement implements Domable{
protected String name;
protected String path;
protected Options options;
protected boolean exists;
protected boolean editable;
protected boolean isUrl;
protected boolean systemLib;
public static final String ELEMENT_NAME="library";
public static final String NAME="name", PATH="path";
public LibraryManagerElement(Options options){
this.options=options;
name=options.getMsg("UNNAMED");
path=null;
exists=false;
editable=false;
isUrl=false;
systemLib=false;
}
public LibraryManagerElement(String name, String path, Options options){
this.name=name;
this.path=path;
this.options=options;
checkAttributes();
}
public static LibraryManagerElement getLibraryManagerElement(org.jdom.Element e, Options options) throws Exception{
LibraryManagerElement lme=new LibraryManagerElement(options);
lme.setProperties(e, null);
return lme;
}
public void setProperties(org.jdom.Element e, Object aux) throws Exception{
JDomUtility.checkName(e, ELEMENT_NAME);
name=JDomUtility.getStringAttr(e, NAME, name, false);
path=JDomUtility.getStringAttr(e, PATH, path, false);
checkAttributes();
}
public org.jdom.Element getJDomElement(){
org.jdom.Element e=new org.jdom.Element(ELEMENT_NAME);
e.setAttribute(NAME, name);
e.setAttribute(PATH, path);
return e;
}
public javax.swing.Icon getIcon(){
String base="icons/database";
if(exists){
if(!editable)
base=base+"_locked";
}
else
base=base+"_unavailable";
return edu.xtec.util.ResourceManager.getImageIcon(base+".gif");
}
protected void checkAttributes(){
exists=false;
editable=false;
isUrl=false;
if(path!=null){
if(path.startsWith("http:") || path.startsWith("https:")){
isUrl=true;
try{
java.net.URL url=new java.net.URL(path.replace(" ", "%20"));
java.net.URLConnection con=url.openConnection();
exists=(con!=null);
} catch(Exception ex){
//
}
}
else{
java.io.File file=new java.io.File(path);
exists=file.exists() && !file.isDirectory() && file.canRead();
if(exists)
editable=file.canWrite();
}
}
}
public void setSystemLib(boolean setting){
systemLib=setting;
}
public boolean isSystemLib(){
return systemLib;
}
@Override
public String toString(){
return name;
}
}