Last active
May 3, 2020 18:33
-
-
Save benyaminbeyzaie/99b86ae1276ddda482355590ba5cfd92 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class SettingLoader { | |
private static SettingLoader settingLoader; | |
private SettingLoader(){} | |
public static SettingLoader getInstance(){ | |
if (settingLoader == null) settingLoader = new SettingLoader(); | |
return settingLoader; | |
} | |
public Setting loadSetting(String address) throws FileNotFoundException, XMLStreamException { | |
FileInputStream xmlFile = new FileInputStream(address); | |
return parseSettingXML(xmlFile); | |
} | |
private Setting parseSettingXML(FileInputStream fileInputStream) throws XMLStreamException { | |
XMLInputFactory xmlInputFactory = XMLInputFactory.newInstance(); | |
XMLEventReader xmlEventReader = xmlInputFactory.createXMLEventReader(fileInputStream); | |
Setting setting = new Setting(); | |
while (xmlEventReader.hasNext()){ | |
XMLEvent xmlEvent = xmlEventReader.nextEvent(); | |
if (xmlEvent.isStartElement()){ | |
StartElement startElement = xmlEvent.asStartElement(); | |
switch (startElement.getName().getLocalPart()) { | |
case "title": | |
xmlEvent = xmlEventReader.nextEvent(); | |
setting.setTITLE(xmlEvent.asCharacters().getData()); | |
break; | |
case "window_size": | |
xmlEventReader.nextTag(); | |
xmlEvent = xmlEventReader.nextEvent(); | |
setting.setSTANDARD_STATES_WIDTH(Integer.parseInt(xmlEvent.asCharacters().getData())); | |
xmlEventReader.nextTag(); | |
xmlEventReader.nextTag(); | |
xmlEvent = xmlEventReader.nextEvent(); | |
setting.setSTANDARD_STATES_HEIGHT(Integer.parseInt(xmlEvent.asCharacters().getData())); | |
break; | |
case "color": | |
xmlEventReader.nextTag(); | |
xmlEvent = xmlEventReader.nextEvent(); | |
String name = xmlEvent.asCharacters().getData(); | |
xmlEventReader.nextTag(); | |
xmlEventReader.nextTag(); | |
xmlEvent = xmlEventReader.nextEvent(); | |
String s = xmlEvent.asCharacters().getData(); | |
Color color = new Color(Integer.parseInt(s.substring(2), 16)); | |
setting.setColor(name, color); | |
break; | |
} | |
} | |
} | |
return setting; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment