001 package com.github.sarxos.webcam.ds.ipcam.impl;
002
003 import java.net.MalformedURLException;
004 import java.net.URL;
005
006 import javax.xml.bind.annotation.XmlAccessType;
007 import javax.xml.bind.annotation.XmlAccessorType;
008 import javax.xml.bind.annotation.XmlAttribute;
009 import javax.xml.bind.annotation.XmlElement;
010
011 import com.github.sarxos.webcam.WebcamException;
012 import com.github.sarxos.webcam.ds.ipcam.IpCamAuth;
013 import com.github.sarxos.webcam.ds.ipcam.IpCamMode;
014
015
016 @XmlAccessorType(XmlAccessType.FIELD)
017 public class IpCamDescriptor {
018
019 @XmlAccessorType(XmlAccessType.FIELD)
020 protected static class AuthParams {
021
022 @XmlAttribute
023 private String user = null;
024
025 @XmlAttribute
026 private String password = null;
027
028 public String getUser() {
029 return user;
030 }
031
032 public String getPassword() {
033 return password;
034 }
035 }
036
037 @XmlAttribute
038 private String name = null;
039
040 @XmlAttribute(name = "url")
041 private String urlString = null;
042
043 private transient URL url = null;
044
045 @XmlAttribute
046 private IpCamMode mode = IpCamMode.PULL;
047
048 @XmlElement(name = "auth")
049 private AuthParams authParams = null;
050
051 private transient IpCamAuth auth = null;
052
053 public String getName() {
054 return name;
055 }
056
057 public URL getURL() {
058 if (urlString != null && url == null) {
059 try {
060 url = new URL(urlString);
061 } catch (MalformedURLException e) {
062 throw new WebcamException(e);
063 }
064 }
065 return url;
066 }
067
068 public IpCamMode getMode() {
069 return mode;
070 }
071
072 public IpCamAuth getAuth() {
073 if (authParams != null && auth == null) {
074 auth = new IpCamAuth(authParams.getUser(), authParams.getPassword());
075 }
076 return auth;
077 }
078 }