📄 modelfactory.java
字号:
/*
* ====================================================================
* This software is subject to the terms of the Common Public License
* Agreement, available at the following URL:
* http://www.opensource.org/licenses/cpl.html .
* Copyright (C) 2003-2004 TONBELLER AG.
* All Rights Reserved.
* You must accept the terms of that agreement to use this software.
* ====================================================================
*
*
*/
package com.tonbeller.jpivot.core;
import java.io.IOException;
import java.net.URL;
import org.apache.commons.digester.Digester;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
/**
* creates a model instance from an xml description. Example
* <pre>
* <?xml version="1.0" encoding="utf-8"?>
* <model id="m1" class="com.tonbeller.jpivot.core.ModelSupport">
* <extension id="f1" class="com.tonbeller.jpivot.core.ExtensionSupport"/>
* <extension id="f2" class="com.tonbeller.jpivot.core.ExtensionSupport"/>
* </model>
* </pre>
* @author av
*/
public class ModelFactory {
/**
* singleton
*/
private ModelFactory() {
}
/**
* not for external use. Has to be public for the commons digester
* to access it.
*/
public static class ModelHolder {
private Model model;
public void setModel(Model model) {
this.model = model;
}
public Model getModel() {
return model;
}
}
/**
* creates a model from an xml configuration file
* @param url url of model configuration file
* @return Model
* @throws SAXException
* @throws IOException
*/
public static Model instance(URL url) throws SAXException, IOException {
Digester digester = new Digester();
digester.setValidating(false);
ModelHolder root = new ModelHolder();
digester.push(root);
digester.addObjectCreate("model", "missing \"class\" attribute", "class");
digester.addSetProperties("model");
digester.addSetNext("model", "setModel");
digester.addObjectCreate("model/extension", "missing \"class\" attribute", "class");
digester.addSetProperties("model/extension");
digester.addSetNext("model/extension", "addExtension");
InputSource is = new InputSource(url.toExternalForm());
digester.parse(is);
return root.getModel();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -