Coverage Report - ca.uhn.hl7v2.conf.store.URLProfileStore
 
Classes in this File Line Coverage Branch Coverage Complexity
URLProfileStore
86%
13/15
100%
6/6
2.667
 
 1  
 /**
 2  
  * The contents of this file are subject to the Mozilla Public License Version 1.1
 3  
  * (the "License"); you may not use this file except in compliance with the License.
 4  
  * You may obtain a copy of the License at http://www.mozilla.org/MPL/
 5  
  * Software distributed under the License is distributed on an "AS IS" basis,
 6  
  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the
 7  
  * specific language governing rights and limitations under the License.
 8  
  * <p>
 9  
  * The Original Code is "URLProfileStore.java".  Description:
 10  
  * "A read-only profile store that loads profiles from URLs."
 11  
  * <p>
 12  
  * The Initial Developer of the Original Code is University Health Network. Copyright (C)
 13  
  * 2003.  All Rights Reserved.
 14  
  * <p>
 15  
  * Contributor(s): ______________________________________.
 16  
  * <p>
 17  
  * Alternatively, the contents of this file may be used under the terms of the
 18  
  * GNU General Public License (the "GPL"), in which case the provisions of the GPL are
 19  
  * applicable instead of those above.  If you wish to allow use of your version of this
 20  
  * file only under the terms of the GPL and not to allow others to use your version
 21  
  * of this file under the MPL, indicate your decision by deleting  the provisions above
 22  
  * and replace  them with the notice and other provisions required by the GPL License.
 23  
  * If you do not delete the provisions above, a recipient may use your version of
 24  
  * this file under either the MPL or the GPL.
 25  
  */
 26  
 package ca.uhn.hl7v2.conf.store;
 27  
 
 28  
 import java.io.BufferedReader;
 29  
 import java.io.IOException;
 30  
 import java.io.InputStreamReader;
 31  
 import java.net.MalformedURLException;
 32  
 import java.net.URL;
 33  
 
 34  
 /**
 35  
  * A read-only profile store that loads profiles from URLs.  The URL 
 36  
  * for a profile is determined by the method getURL().  An 
 37  
  * attempt is also made to write 
 38  
  * @author Bryan Tripp
 39  
  */
 40  
 public abstract class URLProfileStore extends ReadOnlyProfileStore {
 41  
 
 42  
     /** Creates a new instance of URLProfileStore */
 43  20
     public URLProfileStore() {
 44  20
     }
 45  
 
 46  
     /**
 47  
      * Retrieves profile from persistent storage (by ID).
 48  
      *
 49  
      * @param id profile id
 50  
      * @return profile content or null if profile could not be found
 51  
      */
 52  
     public String getProfile(String id) throws IOException {
 53  20
         String profile = null;
 54  20
         BufferedReader in = null;
 55  
         try {
 56  20
             URL url = getURL(id);
 57  20
             if (url != null) {
 58  10
                 in = new BufferedReader(new InputStreamReader(url.openStream()));
 59  10
                 StringBuilder buf = new StringBuilder();
 60  
                 int c;
 61  70
                 while ((c = in.read()) != -1) {
 62  60
                     buf.append((char) c);
 63  
                 }
 64  10
                 profile = buf.toString();
 65  
             }
 66  0
         } catch (MalformedURLException e) {
 67  0
             throw new IOException("MalformedURLException: " + e.getMessage());
 68  
         } finally {
 69  20
             if (in != null) in.close();
 70  
         }
 71  20
         return profile;
 72  
     }
 73  
 
 74  
 
 75  
     /**
 76  
      * Returns the URL from which to read a profile given the profile ID.  For example
 77  
      * given "123" it could return ftp://hospital_x.org/hl7/123.xml, or 
 78  
      * http://hl7_conformance_service.com?profile=123.  
 79  
      */
 80  
     public abstract URL getURL(String ID) throws MalformedURLException;
 81  
 
 82  
 
 83  
     /** Stores profile in persistent storage with given ID.
 84  
      */
 85  
     /*public void persistProfile(String ID, String profile) throws IOException {
 86  
         try {
 87  
             URL url = getWriteURL(ID);
 88  
             if (url == null) {
 89  
                 throw new IOException("Can't persist profile -- this profile store is read-only");
 90  
             } else {
 91  
                 URLConnection uc = url.openConnection();
 92  
                 uc.connect();
 93  
                 uc.getOutputStream().write(profile.getBytes());
 94  
                 uc.getOutputStream().flush();
 95  
                 uc.getOutputStream().close();
 96  
             }
 97  
         } catch (MalformedURLException e) {
 98  
             throw new IOException("MalformedURLException: " + e.getMessage());
 99  
         }
 100  
     }*/
 101  
 
 102  
     /**
 103  
      * Returns the URL to which a profile should be written, given the 
 104  
      * profile ID.  This defaults to getReadURL() but can be over-ridden.  
 105  
      * For read-only stores, over-ride this method to return null.
 106  
      */
 107  
     /*public URL getWriteURL(String ID) throws MalformedURLException {
 108  
         return getReadURL(ID);
 109  
     }*/
 110  
 
 111  
 }