blob: 3967b2a8c20543781bfaabf929dd826b353bc204 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004 Eteration Bilisim A.S.
* All rights reserved.   This program and the accompanying materials
* are made available under the terms of the Common Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v10.html
*
* Contributors:
* Naci M. Dai - initial API and implementation
*
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL ETERATION A.S. OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Eteration Bilisim A.S. For more
* information on eteration, please see
* <http://www.eteration.com/>.
***************************************************************************/
package org.eclipse.jst.server.generic.internal.xml;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FilenameFilter;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Iterator;
/**
* @author Naci Dai
*/
public class XMLUtils {
ArrayList definitions;
File sourceDir;
public XMLUtils(URL installUrl)
{
String serversPath = installUrl.getPath()+"/servers";
URI uri;
try {
uri = new URI(installUrl.getProtocol(),installUrl.getHost(),serversPath,installUrl.getQuery());
sourceDir = new File(uri);
} catch (URISyntaxException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
refresh();
}
public void refresh()
{
definitions = scanFiles(sourceDir);
}
public void update(ServerTypeDefinition element)
{
toFile(element);
}
public void update()
{
Iterator defs = definitions.iterator();
while (defs.hasNext()) {
ServerTypeDefinition element = (ServerTypeDefinition) defs.next();
update(element);
}
}
private void toFile(ServerTypeDefinition def)
{
try {
def.getDefinitionFile().renameTo(new File(def.getDefinitionFile().getCanonicalFile()+".bak"));
} catch (IOException e) {
}
try {
FileOutputStream out = new FileOutputStream(def.getDefinitionFile());
out.write(def.toString().getBytes());
out.close();
} catch (FileNotFoundException e) {
} catch (IOException e) {
}
}
private ArrayList scanFiles(File dir)
{
ArrayList all = new ArrayList();
try {
if(dir.isDirectory()){
File[] allServers = dir.listFiles(new FilenameFilter(){
/* (non-Javadoc)
* @see java.io.FilenameFilter#accept(java.io.File, java.lang.String)
*/
public boolean accept(File dir, String name) {
if(name.endsWith(".server"))
return true;
return false;
}
});
for (int i = 0; i < allServers.length; i++) {
File file = allServers[i];
ServerTypeDefinition def = XMLReader.getServerDefinition(file.getCanonicalPath());
if(def != null){
def.setDefinitionFile(file);
all.add(def);
}
}
}
} catch (IOException e) {
}
return all;
}
/**
* @return ArrayList
*/
public ArrayList getServerTypeDefinitions() {
return definitions;
}
/**
* @return ArrayList
*/
public ServerTypeDefinition getServerTypeDefinitionNamed(String name) {
refresh();
Iterator defs = getServerTypeDefinitions().iterator();
while (defs.hasNext()) {
ServerTypeDefinition elem = (ServerTypeDefinition) defs.next();
if(name.equals(elem.getName()))
return elem;
}
return null;
}
/**
* Sets the definitions.
* @param definitions The definitions to set
*/
public void setDefinitions(ArrayList definitions) {
this.definitions = definitions;
}
}