Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

java / lab7 (1) / lab6 / server / src / implementation / XMLDataAccessObject

.java
Скачиваний:
85
Добавлен:
17.04.2018
Размер:
6.71 Кб
Скачать
package implementation;

import common.People;
import common.RemoteService;
import org.xml.sax.SAXException;

import javax.xml.namespace.QName;
import javax.xml.stream.*;
import javax.xml.stream.events.Attribute;
import javax.xml.stream.events.EndElement;
import javax.xml.stream.events.StartElement;
import javax.xml.stream.events.XMLEvent;
import javax.xml.transform.Source;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import javax.xml.validation.Validator;
import java.io.*;
import java.rmi.RemoteException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;

public class XMLDataAccessObject implements RemoteService {
private String xmlLocation = "server/src/xml/matches.xml";
private XMLInputFactory inputFactory;
private XMLOutputFactory outputFactory;
private XMLEventFactory eventFactory;
private XMLEventWriter writer;
private XMLEventReader reader;


public XMLDataAccessObject() {
Source source = new StreamSource(new File(xmlLocation));

inputFactory = XMLInputFactory.newInstance();
outputFactory = XMLOutputFactory.newInstance();
eventFactory = XMLEventFactory.newInstance();
}

@Override
public long addMan(People man) throws RemoteException {
return 0;
}

@Override
public boolean editMan(People man) throws RemoteException {
return false;
}

@Override
public boolean deleteMan(long id) throws RemoteException {
try {
reader = inputFactory.createXMLEventReader(new FileReader(xmlLocation));
File bufferFile = new File(xmlLocation);
writer = outputFactory.createXMLEventWriter(new FileWriter(bufferFile));
String tagName;
boolean flag = false;
while (reader.hasNext()) {
XMLEvent event = reader.nextEvent();
switch (event.getEventType()) {
case XMLEvent.START_ELEMENT:
if (flag) {
continue;
}
StartElement element = event.asStartElement();
tagName = element.getName().getLocalPart();
switch (tagName) {
case "man":
long currId = Integer.parseInt(element.getAttributeByName(QName.valueOf("id")).getValue().substring(1));
if (currId == id) {
flag = true;
continue;
}
}
break;
case XMLEvent.END_ELEMENT:
EndElement element1 = event.asEndElement();
if (flag) {
if ("man".equals(element1.getName().getLocalPart())) {
flag = false;
}
continue;
}
break;
case XMLEvent.CHARACTERS:
if (flag) {
continue;
}
break;
}
writer.add(event);
}
} catch (XMLStreamException | IOException e) {
System.err.println(e.getMessage());
} finally {
if (reader != null) {
try {
reader.close();
} catch (XMLStreamException e) {
e.printStackTrace();
}
}
if (writer != null) {
try {
writer.close();
} catch (XMLStreamException e) {
e.printStackTrace();
}
}
}
return true;
}

@Override
public List<People> fetchAllPeople() throws RemoteException {
List<People> result = new ArrayList<>();
String tagName = null;
People man = null;
try {
reader = inputFactory.createXMLEventReader(new FileReader(xmlLocation));
while (reader.hasNext()) {
XMLEvent event = reader.nextEvent();
switch (event.getEventType()) {
case XMLEvent.START_ELEMENT:
StartElement element = event.asStartElement();
tagName = element.getName().getLocalPart();
assert tagName != null;
switch (tagName) {
case "man":
man = new People();
long id = Long.parseLong(element.getAttributeByName(QName.valueOf("id")).getValue().substring(1));
man.setId(id);
break;
}
break;
case XMLEvent.CHARACTERS:
if (event.asCharacters().isWhiteSpace()) continue;
String text = event.asCharacters().getData();
switch (tagName) {
case "name":
man.setName(text);
break;
default:
man.setAdditional(text);
break;
}
break;
case XMLEvent.END_ELEMENT:
EndElement element1 = event.asEndElement();
tagName = element1.getName().getLocalPart();
switch (tagName) {
case "man":
result.add(man);
break;
default:
break;
}
break;
}
}
} catch (XMLStreamException | FileNotFoundException e) {
System.err.println(e.getMessage());
} finally {
if (reader != null) {
try {
reader.close();
} catch (XMLStreamException e) {
System.err.println(e.getMessage());
}
}
}
return result;
}
}
Соседние файлы в папке implementation