001package ezvcard.property;
002
003import java.util.List;
004
005import ezvcard.parameter.Pid;
006
007/*
008 Copyright (c) 2012-2023, Michael Angstadt
009 All rights reserved.
010
011 Redistribution and use in source and binary forms, with or without
012 modification, are permitted provided that the following conditions are met: 
013
014 1. Redistributions of source code must retain the above copyright notice, this
015 list of conditions and the following disclaimer. 
016 2. Redistributions in binary form must reproduce the above copyright notice,
017 this list of conditions and the following disclaimer in the documentation
018 and/or other materials provided with the distribution. 
019
020 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
021 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
022 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
023 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
024 ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
025 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
026 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
027 ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
028 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
029 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
030
031 The views and conclusions contained in the software and documentation are those
032 of the authors and should not be interpreted as representing official policies, 
033 either expressed or implied, of the FreeBSD Project.
034 */
035
036/**
037 * <p>
038 * Defines a URL that points to the person's homepage or business website.
039 * </p>
040 * 
041 * <p>
042 * <b>Code sample</b>
043 * </p>
044 * 
045 * <pre class="brush:java">
046 * VCard vcard = new VCard();
047 * 
048 * Url url = new Url("http://www.company.com");
049 * vcard.addUrl(url);
050 * </pre>
051 * 
052 * <p>
053 * <b>Property name:</b> {@code URL}
054 * </p>
055 * <p>
056 * <b>Supported versions:</b> {@code 2.1, 3.0, 4.0}
057 * </p>
058 * @author Michael Angstadt
059 * @see <a href="http://tools.ietf.org/html/rfc6350#page-47">RFC 6350 p.47</a>
060 * @see <a href="http://tools.ietf.org/html/rfc2426#page-25">RFC 2426 p.25</a>
061 * @see <a href="http://www.imc.org/pdi/vcard-21.doc">vCard 2.1 p.21</a>
062 */
063public class Url extends UriProperty implements HasAltId {
064        /**
065         * Creates a URL property.
066         * @param url the URL (e.g. "http://example.com")
067         */
068        public Url(String url) {
069                super(url);
070        }
071
072        /**
073         * Copy constructor.
074         * @param original the property to make a copy of
075         */
076        public Url(Url original) {
077                super(original);
078        }
079
080        /**
081         * Gets the MEDIATYPE parameter.
082         * <p>
083         * <b>Supported versions:</b> {@code 4.0}
084         * </p>
085         * @return the media type or null if not set
086         */
087        public String getMediaType() {
088                return parameters.getMediaType();
089        }
090
091        /**
092         * Sets the MEDIATYPE parameter.
093         * <p>
094         * <b>Supported versions:</b> {@code 4.0}
095         * </p>
096         * @param mediaType the media type or null to remove
097         */
098        public void setMediaType(String mediaType) {
099                parameters.setMediaType(mediaType);
100        }
101
102        @Override
103        public List<Pid> getPids() {
104                return super.getPids();
105        }
106
107        @Override
108        public Integer getPref() {
109                return super.getPref();
110        }
111
112        @Override
113        public void setPref(Integer pref) {
114                super.setPref(pref);
115        }
116
117        //@Override
118        public String getAltId() {
119                return parameters.getAltId();
120        }
121
122        //@Override
123        public void setAltId(String altId) {
124                parameters.setAltId(altId);
125        }
126
127        /**
128         * Gets the TYPE parameter.
129         * <p>
130         * <b>Supported versions:</b> {@code 4.0*}
131         * </p>
132         * 
133         * <p>
134         * <i>* Some mail clients will add this parameter to URL properties in 2.1
135         * and 3.0 vCards, however.</i>
136         * </p>
137         * 
138         * @return the TYPE value (typically, this will be either "work" or "home")
139         * or null if it doesn't exist
140         */
141        public String getType() {
142                return parameters.getType();
143        }
144
145        /**
146         * Sets the TYPE parameter.
147         * <p>
148         * <b>Supported versions:</b> {@code 4.0*}
149         * </p>
150         * 
151         * <p>
152         * <i>* Some mail clients will add this parameter to URL properties in 2.1
153         * and 3.0 vCards, however.</i>
154         * </p>
155         * @param type the TYPE value (this should be either "work" or "home") or
156         * null to remove
157         */
158        public void setType(String type) {
159                parameters.setType(type);
160        }
161
162        @Override
163        public Url copy() {
164                return new Url(this);
165        }
166}