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    }