~graziano.obertelli/eucalyptus/lp683800

« back to all changes in this revision

Viewing changes to clc/modules/configuration/src/main/java/com/eucalyptus/accounts/UserGroupInfo.java

- initial implementation of get/set property with support for static and db-singletons, tools in clc/tools/src/
- initial implementation of user control, tools in clc/tools/src
- basic stubs of client tools for register-component (only for CC right now)
- support for binding discovery (no need to seed bindings anymore)
- fixes invocation of defered initializers in the remote vs. local case
- support for pluggable "discovery" during bootstrap; e.g., see BootstrapperDiscovery

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*******************************************************************************
 
2
*Copyright (c) 2009  Eucalyptus Systems, Inc.
 
3
 
4
*  This program is free software: you can redistribute it and/or modify
 
5
*  it under the terms of the GNU General Public License as published by
 
6
*  the Free Software Foundation, only version 3 of the License.
 
7
 
8
 
9
*  This file is distributed in the hope that it will be useful, but WITHOUT
 
10
*  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 
11
*  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 
12
*  for more details.
 
13
 
14
*  You should have received a copy of the GNU General Public License along
 
15
*  with this program.  If not, see <http://www.gnu.org/licenses/>.
 
16
 
17
*  Please contact Eucalyptus Systems, Inc., 130 Castilian
 
18
*  Dr., Goleta, CA 93101 USA or visit <http://www.eucalyptus.com/licenses/>
 
19
*  if you need additional information or have any questions.
 
20
 
21
*  This file may incorporate work covered under the following copyright and
 
22
*  permission notice:
 
23
 
24
*    Software License Agreement (BSD License)
 
25
 
26
*    Copyright (c) 2008, Regents of the University of California
 
27
*    All rights reserved.
 
28
 
29
*    Redistribution and use of this software in source and binary forms, with
 
30
*    or without modification, are permitted provided that the following
 
31
*    conditions are met:
 
32
 
33
*      Redistributions of source code must retain the above copyright notice,
 
34
*      this list of conditions and the following disclaimer.
 
35
 
36
*      Redistributions in binary form must reproduce the above copyright
 
37
*      notice, this list of conditions and the following disclaimer in the
 
38
*      documentation and/or other materials provided with the distribution.
 
39
 
40
*    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
 
41
*    IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
 
42
*    TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
 
43
*    PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
 
44
*    OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 
45
*    EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 
46
*    PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 
47
*    PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 
48
*    LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 
49
*    NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 
50
*    SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. USERS OF
 
51
*    THIS SOFTWARE ACKNOWLEDGE THE POSSIBLE PRESENCE OF OTHER OPEN SOURCE
 
52
*    LICENSED MATERIAL, COPYRIGHTED MATERIAL OR PATENTED MATERIAL IN THIS
 
53
*    SOFTWARE, AND IF ANY SUCH MATERIAL IS DISCOVERED THE PARTY DISCOVERING
 
54
*    IT MAY INFORM DR. RICH WOLSKI AT THE UNIVERSITY OF CALIFORNIA, SANTA
 
55
*    BARBARA WHO WILL THEN ASCERTAIN THE MOST APPROPRIATE REMEDY, WHICH IN
 
56
*    THE REGENTS’ DISCRETION MAY INCLUDE, WITHOUT LIMITATION, REPLACEMENT
 
57
*    OF THE CODE SO IDENTIFIED, LICENSING OF THE CODE SO IDENTIFIED, OR
 
58
*    WITHDRAWAL OF THE CODE CAPABILITY TO THE EXTENT NEEDED TO COMPLY WITH
 
59
*    ANY SUCH LICENSES OR RIGHTS.
 
60
*******************************************************************************/
 
61
/*
 
62
 * Author: chris grzegorczyk <grze@eucalyptus.com>
 
63
 */
 
64
package com.eucalyptus.accounts;
 
65
 
 
66
import org.hibernate.annotations.Cache;
 
67
import org.hibernate.annotations.CacheConcurrencyStrategy;
 
68
 
 
69
import com.eucalyptus.entities.EntityWrapper;
 
70
import com.eucalyptus.util.EucalyptusCloudException;
 
71
 
 
72
import javax.persistence.*;
 
73
 
 
74
import java.util.ArrayList;
 
75
import java.util.List;
 
76
 
 
77
@Entity
 
78
@PersistenceContext(name="eucalyptus_general")
 
79
@Table( name = "user_groups" )
 
80
@Cache( usage = CacheConcurrencyStrategy.READ_WRITE )
 
81
public class UserGroupInfo {
 
82
  @Id
 
83
  @GeneratedValue
 
84
  @Column( name = "user_group_id" )
 
85
  private Long id = -1l;
 
86
  @Column( name = "user_group_name" )
 
87
  private String name;
 
88
  @ManyToMany( cascade = CascadeType.ALL )
 
89
  @JoinTable(
 
90
      name = "group_has_users",
 
91
      joinColumns = { @JoinColumn( name = "user_group_id" ) },
 
92
      inverseJoinColumns = @JoinColumn( name = "user_id" )
 
93
  )
 
94
  @Cache( usage = CacheConcurrencyStrategy.READ_WRITE )
 
95
  private List<UserInfo> users = new ArrayList<UserInfo>();
 
96
 
 
97
  public static UserGroupInfo named( String name ) throws EucalyptusCloudException {
 
98
    EntityWrapper<UserGroupInfo> db = new EntityWrapper<UserGroupInfo>();
 
99
    UserGroupInfo userGroup = null;
 
100
    try {
 
101
      userGroup = db.getUnique( new UserGroupInfo( name ) );
 
102
      db.commit( );
 
103
    } catch( Exception e ) {
 
104
      db.add( new UserGroupInfo( "all" ) );
 
105
      db.commit( );
 
106
    }
 
107
    return userGroup;
 
108
  }
 
109
 
 
110
  public UserGroupInfo() {
 
111
  }
 
112
 
 
113
 
 
114
  public UserGroupInfo( final String name ) {
 
115
    this.name = name;
 
116
  }
 
117
 
 
118
  public Long getId() {
 
119
    return id;
 
120
  }
 
121
 
 
122
  public String getName() {
 
123
    return name;
 
124
  }
 
125
 
 
126
  public void setName( final String name ) {
 
127
    this.name = name;
 
128
  }
 
129
 
 
130
  @Override
 
131
  public boolean equals( final Object o ) {
 
132
    if ( this == o ) return true;
 
133
    if ( o == null || getClass() != o.getClass() ) return false;
 
134
 
 
135
    UserGroupInfo that = ( UserGroupInfo ) o;
 
136
 
 
137
    if ( !name.equals( that.name ) ) return false;
 
138
 
 
139
    return true;
 
140
  }
 
141
 
 
142
  @Override
 
143
  public int hashCode() {
 
144
    return name.hashCode();
 
145
  }
 
146
 
 
147
  public boolean belongs( UserInfo user ) {
 
148
    return this.users.contains( user ) || this.name.equals("all");
 
149
  }
 
150
 
 
151
  public List<UserInfo> getUsers() {
 
152
    return users;
 
153
  }
 
154
 
 
155
  public void setUsers( final List<UserInfo> users ) {
 
156
    this.users = users;
 
157
  }
 
158
}