1 package org.apache.torque.adapter;
2
3 /*
4 * Licensed to the Apache Software Foundation (ASF) under one
5 * or more contributor license agreements. See the NOTICE file
6 * distributed with this work for additional information
7 * regarding copyright ownership. The ASF licenses this file
8 * to you under the Apache License, Version 2.0 (the
9 * "License"); you may not use this file except in compliance
10 * with the License. You may obtain a copy of the License at
11 *
12 * http://www.apache.org/licenses/LICENSE-2.0
13 *
14 * Unless required by applicable law or agreed to in writing,
15 * software distributed under the License is distributed on an
16 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17 * KIND, either express or implied. See the License for the
18 * specific language governing permissions and limitations
19 * under the License.
20 */
21
22 /**
23 * Interface for various ID retrieval method types
24 * (i.e. auto-increment, sequence, ID broker, etc.).
25 *
26 * @author <a href="mailto:dlr@collab.net">Daniel Rall</a>
27 * @version $Id: IDMethod.java 1336543 2012-05-10 08:56:52Z tfischer $
28 */
29 public enum IDMethod
30 {
31 /**
32 * Key generation via database-specific ID method
33 * (i.e. auto-increment for MySQL, sequence for Oracle, etc.).
34 */
35 NATIVE("native"),
36
37 /**
38 * Key generation via auto-increment.
39 */
40 AUTO_INCREMENT("autoincrement"),
41
42 /**
43 * Key generation via sequences.
44 */
45 SEQUENCE("sequence"),
46
47 /**
48 * Key generation via the IDBroker table.
49 */
50 ID_BROKER("idbroker"),
51
52 /**
53 * No RDBMS key generation (keys may be generated by the application).
54 */
55 NO_ID_METHOD("none");
56
57 /** The name of the id method. */
58 private String idMethod;
59
60 /**
61 * Constructor.
62 *
63 * @param idMethod the text of the idMethod.
64 */
65 private IDMethod(String idMethod)
66 {
67 this.idMethod = idMethod;
68 }
69
70 @Override
71 public String toString()
72 {
73 return idMethod;
74 }
75
76 /**
77 * Returns the id method for a id method name.
78 *
79 * @param idMethod the name of the id method.
80 *
81 * @return the id method.
82 *
83 * @throws IllegalArgumentException if idMethod is not a known name.
84 */
85 public static IDMethod getIdMethod(String idMethod)
86 {
87 for (IDMethod candidate : values())
88 {
89 if (candidate.toString().equals(idMethod))
90 {
91 return candidate;
92 }
93 }
94 throw new IllegalArgumentException("Unknown idMethod " + idMethod);
95 }
96 }