com.github.sarxos.webcam.ds.ipcam.IpCamStorage Maven / Gradle / Ivy
package com.github.sarxos.webcam.ds.ipcam;
import java.io.File;
import java.util.List;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import com.github.sarxos.webcam.WebcamException;
import com.github.sarxos.webcam.ds.ipcam.impl.IpCamDescriptor;
@XmlRootElement(name = "storage")
@XmlAccessorType(XmlAccessType.FIELD)
public class IpCamStorage {
private static final Class>[] CLASSES = new Class>[] {
IpCamStorage.class,
IpCamDescriptor.class,
};
private static final JAXBContext CTX;
static {
JAXBContext c = null;
try {
c = JAXBContext.newInstance(CLASSES);
} catch (JAXBException e) {
throw new RuntimeException(e);
} finally {
CTX = c;
}
}
@XmlElement(name = "ipcam")
private List descriptors = null;
private transient File file = null;
protected IpCamStorage() {
}
public IpCamStorage(String file) {
this(new File(file));
}
public IpCamStorage(File file) {
this.file = file;
}
protected List getDescriptors() {
return descriptors;
}
public void open() {
IpCamStorage storage = null;
try {
Unmarshaller unmarshaller = CTX.createUnmarshaller();
storage = (IpCamStorage) unmarshaller.unmarshal(file);
} catch (JAXBException e) {
throw new WebcamException(e);
}
for (IpCamDescriptor d : storage.getDescriptors()) {
IpCamDeviceRegistry.register(d.getName(), d.getURL(), d.getMode(), d.getAuth());
}
}
}