Project

General

Profile

1 6023 cjones
/**
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
}