package ru.csu.stan.java.classgen.handlers; import javax.xml.stream.events.XMLEvent; /** * Фабрика обработчиков STAX-событий. * В зависимости от типа события создает необходимый обработчик. * * @author mz * */ public class HandlerFactory { /** \ * Закрытый конструктор по-умолчанию. * @see #getInstance() */ private HandlerFactory(){} /** * Статический метод генерации для получения экземпляра фабрики. * @return */ public static HandlerFactory getInstance(){ return new HandlerFactory(); } /** * Создание обработчика STAX-события по самому событию. * @param xmlEvent * @return */ public <T> IStaxHandler<T> createHandler(XMLEvent xmlEvent){ switch (xmlEvent.getEventType()){ case XMLEvent.ATTRIBUTE: return new NothingToDoHandler<T>(); case XMLEvent.CHARACTERS: return new NothingToDoHandler<T>(); case XMLEvent.END_DOCUMENT: return new NothingToDoHandler<T>(); case XMLEvent.END_ELEMENT: return new EndElementHandler<T>(xmlEvent.asEndElement()); case XMLEvent.START_DOCUMENT: return new NothingToDoHandler<T>(); case XMLEvent.START_ELEMENT: return new StartElementHandler<T>(xmlEvent.asStartElement()); default: return new NothingToDoHandler<T>(); } } }