Project

General

Profile

1
/**
2
 *  '$RCSfile$'
3
 *    Purpose: A Class that implements session utility methods 
4
 *  Copyright: 2011 Regents of the University of California and the
5
 *             National Center for Ecological Analysis and Synthesis
6
 *    Authors: Christopher Jones
7
 * 
8
 *   '$Author: $'
9
 *     '$Date: $'
10
 * '$Revision: $'
11
 *
12
 * This program is free software; you can redistribute it and/or modify
13
 * it under the terms of the GNU General Public License as published by
14
 * the Free Software Foundation; either version 2 of the License, or
15
 * (at your option) any later version.
16
 *
17
 * This program is distributed in the hope that it will be useful,
18
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
19
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20
 * GNU General Public License for more details.
21
 *
22
 * You should have received a copy of the GNU General Public License
23
 * along with this program; if not, write to the Free Software
24
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
25
 */
26

    
27
package edu.ucsb.nceas.metacat.service;
28

    
29
import org.apache.commons.io.IOUtils;
30
import org.apache.log4j.Logger;
31

    
32
import edu.ucsb.nceas.metacat.properties.PropertyService;
33
import edu.ucsb.nceas.metacat.shared.BaseService;
34
import edu.ucsb.nceas.metacat.shared.ServiceException;
35

    
36
/**
37
 *  The ObjectFormatService manages the list of object formats registered
38
 *  within Metacat.  This includes schema types, mime types, and other
39
 *  information related to a particular format.  The service provides
40
 *  functionality for the DataONE MemberNode and CoordinatingNode components,
41
 *  with CoordinatingNodes providing the authoritative list of object formats.
42
 */
43
public class ObjectFormatService extends BaseService {
44
  
45
  
46
  /* The instance of the logging class */
47
  private static Logger logMetacat = Logger.getLogger(ObjectFormatService.class);
48
  
49
  /* The singleton instance of the object format service */
50
  private ObjectFormatService objectFormatService = null;
51
  
52
  /* The scope of the object formats docid used as the metacat identifier */
53
  private static final String OBJECT_FORMATS_SCOPE = "OBJECT_FORMAT_LIST.1";
54
  
55
  /* The revision of the object formats document */
56
  private int rev;
57
  
58
  /*
59
   * Constructor: Creates an instance of the object format service. Since
60
   * this uses a singleton pattern, use getInstance() to gain the instance.
61
   */
62
  private ObjectFormatService() {
63
    
64
    super();
65
    this._serviceName="ObjectFormatService";
66
    
67
    try {
68
      doRefresh();
69
      
70
    } catch (ServiceException se) {
71
      logMetacat.debug("There was a problem creating the ObjectFormatService. " +
72
                       "The error message was: " + se.getMessage());
73
      
74
    }
75
    
76
  }
77
  
78
  /**
79
   *  Get the instance of the ObjectFormatService that has been instantiated,
80
   *  or instantiate one if it has not been already.
81
   *
82
   * @return objectFormatService - The instance of the object format service
83
   */
84
  public ObjectFormatService getInstance(){
85
    
86
    if ( this.objectFormatService == null ) {
87
      
88
      this.objectFormatService = new ObjectFormatService();
89
      
90
    }
91
    return this.objectFormatService;
92
  }
93
  
94
  /**
95
   * Refreshes the object format service by manually updating the object
96
   * format document.
97
   */
98
  public void doRefresh() throws ServiceException {
99
    
100
    // stub only
101
    logMetacat.debug("ObjectFormatService.doRefresh() called. " +
102
                     "Refreshing the object format service.");
103
    
104
    return;
105
  }
106
  
107
  /**
108
   * Indicate whether or not this service is refreshable.  In this case it is,
109
   * where the ObjectFormatService can manually get the latest object format
110
   * document from Metacat.
111
   *
112
   * @return refreshable - the boolean refreshable status
113
   */
114
  public boolean refreshable() {
115
    return true;
116
    
117
  }
118
  
119
  /**
120
   * Stop the ObjectFormatService. When stopped, the service will no longer
121
   * respond to requests. Not implemented yet.
122
   */
123
  public void stop() throws ServiceException {
124
    
125
    // stub only 
126
    return;
127
  }
128
   
129
}
(1-1/6)