001 /*
002 * file CqUser.java
003 *
004 * Licensed Materials - Property of IBM
005 * Restricted Materials of IBM
006 *
007 * com.ibm.rational.wvcm.stp.cq.CqUser
008 *
009 * © Copyright IBM Corporation 2006, 2008. All Rights Reserved.
010 * Note to U.S. Government Users Restricted Rights: Use, duplication or
011 * disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
012 */
013
014 package com.ibm.rational.wvcm.stp.cq;
015
016 import static com.ibm.rational.wvcm.stpex.StpExBase.PROPERTY_NAMESPACE;
017
018 import java.util.List;
019
020 import javax.wvcm.Feedback;
021 import javax.wvcm.ResourceList;
022 import javax.wvcm.WvcmException;
023 import javax.wvcm.PropertyNameList.PropertyName;
024
025 import com.ibm.rational.wvcm.stp.StpPartialResultsException;
026 import com.ibm.rational.wvcm.stp.StpProperty;
027 import com.ibm.rational.wvcm.stp.StpResource;
028 import com.ibm.rational.wvcm.stpex.StpExEnumeration;
029 import com.ibm.rational.wvcm.stpex.StpExEnumerationBase;
030
031 /**
032 * The proxy interface for information stored in a DbSet for a single user. A
033 * user’s login, access privileges and some other information can be retrieved
034 * and specified through this object. You can also subscribe and unsubscribe a
035 * user to databases and upgrade user information in all the user databases that
036 * the user is currently subscribed to.
037 * <p>
038 * Note that CqUser.doWriteProperties(...) writes dirty properties of this proxy
039 * into the DbSet. For the new values to be visible to a user database,
040 * {@link CqUserDb#doUpgradeUsersAndGroups(Feedback)} must be invoked on that
041 * database or {@link CqUser#doUpgradeDatabases(Feedback)} must be invoked on
042 * this user.
043 * <p>
044 * The user-friendly specification for the location of a user has the form
045 *
046 * <pre>
047 * <b>cq.user:</b><i><user-name></i>@<i><db-set></i>
048 * </pre>
049 */
050 public interface CqUser extends CqResource, CqUserInfo
051 {
052 /** The database set that contains this user resource */
053 PropertyName<CqDbSet> DB_SET =
054 new PropertyName<CqDbSet>(PROPERTY_NAMESPACE, "db-set");
055
056 /**
057 * Returns the value of the {@link #DB_SET DB_SET} property as defined by
058 * this proxy.
059 *
060 * @return A CqDbSet proxy for the database set that contains this resource.
061 *
062 * @throws WvcmException if this proxy does not define a value for the
063 * {@link #DB_SET DB_SET} property.
064 */
065 CqDbSet getDbSet() throws WvcmException;
066
067 /**
068 * An enumeration of the authentication modes available to a user
069 */
070 enum AuthenticationMode implements StpExEnumeration
071 {
072 /** LDAP authentication is being used by this user */
073 LDAP,
074
075 /** Traditional ClearQuest authentication is being used by this user */
076 CLEAR_QUEST
077 }
078
079 /**
080 * Whether this user is authenticated via an LDAP login or via ClearQuest
081 * login-name and password.
082 */
083 static PropertyName<AuthenticationMode> AUTHENTICATION_MODE =
084 new PropertyName<AuthenticationMode>(PROPERTY_NAMESPACE,
085 "authentication-mode");
086
087 /**
088 * Returns the value of the {@link #AUTHENTICATION_MODE AUTHENTICATION_MODE}
089 * property as defined by this proxy.
090 *
091 * @return An AuthenticationMode enumerator indicating what method is used
092 * to authenticate this user. Will never be <b>null</b>.
093 *
094 * @throws WvcmException if this proxy does not define a value for the
095 * {@link #AUTHENTICATION_MODE AUTHENTICATION_MODE} property.
096 */
097 AuthenticationMode getAuthenticationMode() throws WvcmException;
098
099 /**
100 * Defines a new value for the
101 * {@link #AUTHENTICATION_MODE AUTHENTICATION_MODE} property of this proxy.
102 * <p>
103 * When setting the authentication mode to CLEAR_QUEST authentication, the
104 * AUTHENTICATOR property specifies the new ClearQuest password.
105 * <p>
106 * When setting the authentication mode to LDAP authentication, the
107 * AUTHENTICATOR property specifies the LDAP login name (a ClearQuest
108 * password is not used for LDAP authentication).
109 *
110 * @param mode An AuthenticationMode enumerator specifying the new
111 * authentication mode for this user.
112 *
113 * @see #setLoginName(String)
114 * @see #setAuthenticator(String)
115 */
116 void setAuthenticationMode(AuthenticationMode mode);
117
118 /**
119 * The user's e-mail address.
120 */
121 static PropertyName<String> EMAIL =
122 new PropertyName<String>(PROPERTY_NAMESPACE, "email");
123
124 /**
125 * Returns the value of the {@link #EMAIL EMAIL} property as defined by this
126 * proxy.
127 *
128 * @return A String containing the email field of this user's profile. Will
129 * never be <b>null</b>.
130 *
131 * @throws WvcmException if this proxy does not define a value for the
132 * {@link #EMAIL EMAIL} property.
133 */
134 String getEmail() throws WvcmException;
135
136 /**
137 * Defines a new value for the {@link #EMAIL EMAIL} property of this proxy.
138 *
139 * @param email A String containing the new value for the email field of
140 * this user's profile
141 */
142 void setEmail(String email);
143
144 /**
145 * The full name of the user
146 */
147 static PropertyName<String> FULL_NAME =
148 new PropertyName<String>(PROPERTY_NAMESPACE, "full-name");
149
150 /**
151 * Returns the value of the {@link #FULL_NAME FULL_NAME} property as defined
152 * by this proxy.
153 *
154 * @return A String containing the full name field of this user's profile.
155 * Will never be <b>null</b>.
156 *
157 * @throws WvcmException if this proxy does not define a value for the
158 * {@link #FULL_NAME FULL_NAME} property.
159 */
160 String getFullName() throws WvcmException;
161
162 /**
163 * Defines a new value for the {@link #FULL_NAME FULL_NAME} property of this
164 * proxy.
165 *
166 * @param fullName A String containing the new value for the full name field
167 * of this user's profile
168 */
169 void setFullName(String fullName) throws WvcmException;
170
171 /**
172 * A list of active user groups to which the user belongs.
173 *
174 * The list can be empty.
175 */
176 static PropertyName<ResourceList<CqGroup>> GROUPS =
177 new PropertyName<ResourceList<CqGroup>>(PROPERTY_NAMESPACE, "groups");
178
179 /**
180 * Returns the value of the {@link #GROUPS GROUPS} property as defined by
181 * this proxy.
182 *
183 * @return A ResourceList containing a CqGroup proxy for each group this
184 * user belongs to. Will never be <b>null</b>.
185 *
186 * @throws WvcmException if this proxy does not define a value for the
187 * {@link #GROUPS GROUPS} property.
188 */
189 ResourceList<CqGroup> getGroups() throws WvcmException;
190
191 /**
192 * The miscellaneous information field of the user's profile.
193 */
194 static PropertyName<String> MISCELLANEOUS_INFORMATION =
195 new PropertyName<String>(PROPERTY_NAMESPACE,
196 "miscellaneous-information");
197
198 /**
199 * Returns the value of the
200 * {@link #MISCELLANEOUS_INFORMATION MISCELLANEOUS_INFORMATION} property as
201 * defined by this proxy.
202 *
203 * @return A String containing the content of the miscellaneous information
204 * field of this user's profile. Will never be <b>null</b>.
205 *
206 * @throws WvcmException if this proxy does not define a value for the
207 * {@link #MISCELLANEOUS_INFORMATION MISCELLANEOUS_INFORMATION}
208 * property.
209 */
210 String getMiscellaneousInformation() throws WvcmException;
211
212 /**
213 * Defines a new value for the
214 * {@link #MISCELLANEOUS_INFORMATION MISCELLANEOUS_INFORMATION} property of
215 * this proxy.
216 *
217 * @param miscInfo A String containing the new value for the miscellaneous
218 * information field of this user's profile
219 */
220 void setMiscellaneousInformation(String miscInfo);
221
222 /**
223 * The string used by ClearQuest to identify this user. Note: if LDAP
224 * authentication is enabled for this user, the value of this property may
225 * not actually be used for login, as the name of the property might
226 * suggest.
227 */
228 static PropertyName<String> LOGIN_NAME =
229 new PropertyName<String>(PROPERTY_NAMESPACE, "login-name");
230
231 /**
232 * Returns the value of the {@link #LOGIN_NAME LOGIN_NAME} property as
233 * defined by this proxy.
234 *
235 * @return A String containing the login name field of the user's profile.
236 * Will never be <b>null</b>.
237 *
238 * @throws WvcmException if this proxy does not define a value for the
239 * {@link #LOGIN_NAME LOGIN_NAME} property.
240 */
241 String getLoginName() throws WvcmException;
242
243 /**
244 * Defines a new value for the {@link #LOGIN_NAME LOGIN_NAME} property of
245 * this proxy. Note, changing the login name of a user changes the location
246 * of the CqUser object for that user.
247 *
248 * @param loginName A String containing the new value for the login-name
249 * field of this user's profile
250 */
251 void setLoginName(String loginName);
252
253 /**
254 * An encrypted version of the value placed in the AUTHENTICATOR property of
255 * this CqUser resource.
256 */
257 static PropertyName<String> AUTHENTICATOR =
258 new PropertyName<String>(PROPERTY_NAMESPACE, "authenticator");
259
260 /**
261 * Returns the value of the {@link #AUTHENTICATOR AUTHENTICATOR} property as
262 * defined by this proxy.
263 *
264 * @return A String containing an encrypted copy of the value of the
265 * AUTHENTICATOR property of this user resource. Will never be
266 * <b>null</b>.
267 *
268 * @throws WvcmException if this proxy does not define a value for the
269 * {@link #AUTHENTICATOR AUTHENTICATOR} property.
270 */
271 String getAuthenticator() throws WvcmException;
272
273 /**
274 * Defines a new value for the {@link #AUTHENTICATOR AUTHENTICATOR} property
275 * of this proxy. In LDAP AUTHENTICATION_MODE, or when changing to LDAP
276 * AUTHENTICATION_MODE, this property specifies the LDAP login name to be
277 * associated with this ClearQuest user. In CLEAR_QUEST AUTHENTICATION_MODE,
278 * or when changing to CLEAR_QUEST AUTHENTICATION_MODE, this property
279 * specifies the new ClearQuest password.
280 *
281 * @param password A String containing the new value for the authenticator
282 * associated with this user.
283 */
284 void setAuthenticator(String password);
285
286 /**
287 * The phone number field from this user's profile.
288 */
289 static PropertyName<String> PHONE =
290 new PropertyName<String>(PROPERTY_NAMESPACE, "phone");
291
292 /**
293 * Returns the value of the {@link #PHONE PHONE} property as defined by this
294 * proxy.
295 *
296 * @return A String containing the phone field of this user's profile. Will
297 * never be <b>null</b>.
298 *
299 * @throws WvcmException if this proxy does not define a value for the
300 * {@link #PHONE PHONE} property.
301 */
302 String getPhone() throws WvcmException;
303
304 /**
305 * Defines a new value for the {@link #PHONE PHONE} property of this proxy.
306 *
307 * @param phone A String containing the new value for the phone field of
308 * this user's profile
309 */
310 void setPhone(String phone);
311
312 /**
313 * The databases to which the user is subscribed. If the user is subscribed
314 * to all databases, this list will contain all databases.
315 */
316 static PropertyName<ResourceList<CqUserDb>> SUBSCRIBED_DATABASES =
317 new PropertyName<ResourceList<CqUserDb>>(PROPERTY_NAMESPACE,
318 "subscribed-databases");
319
320 /**
321 * Returns the value of the
322 * {@link #SUBSCRIBED_DATABASES SUBSCRIBED_DATABASES} property as defined by
323 * this proxy.
324 *
325 * @return A ResourceList containing a CqUserDb resource for each user
326 * database to which this group is subscribed. Will never be <b>null</b>.
327 *
328 * @throws WvcmException if this proxy does not define a value for the
329 * {@link #SUBSCRIBED_DATABASES SUBSCRIBED_DATABASES} property.
330 */
331 ResourceList<CqUserDb> getSubscribedDatabases() throws WvcmException;
332
333 /**
334 * Defines a new value for the
335 * {@link #SUBSCRIBED_DATABASES SUBSCRIBED_DATABASES} property of this
336 * proxy.
337 *
338 * @param value A ResourceList containing a CqUserDb proxy for each user
339 * database to which this user is now subscribed. May be <b>null</b>
340 * or empty to unsubscribe the user from all user databases.
341 */
342 void setSubscribedDatabases(ResourceList<CqUserDb> value);
343
344 /**
345 * Establishes the values to be added to and/or deleted from the
346 * SUBSCRIBED_DATABASES property when that property is updated from this
347 * proxy (via doWriteProperties or any other "do" method of this interface).
348 *
349 * @param additions The list of CqUserDb proxies that must be in the
350 * SUBSCRIBED_DATABASES property after it has been updated from
351 * this proxy. Thus, it is OK for a value in this list to already
352 * be a member of the property value. This list may be empty or
353 * null if no values are to be added to the property. A value may
354 * not appear in both this list and the deletions list.
355 *
356 * @param deletions The list of CqUserDb proxies that must not be in the
357 * SUBSCRIBED_DATABASES property after it has been updated from
358 * this proxy. Thus, it is OK for a value in this list to not be
359 * a current member of the property value. This list may be empty
360 * or null if no values are to be deleted from the property. A
361 * value may not appear in both this list and the additions list.
362 */
363 void setSubscribedDatabases(ResourceList<CqUserDb> additions,
364 ResourceList<CqUserDb> deletions);
365
366 /**
367 * Indication of whether or not this user's account is active
368 */
369 static PropertyName<Boolean> IS_ACTIVE =
370 new PropertyName<Boolean>(PROPERTY_NAMESPACE, "is-active");
371
372 /**
373 * Returns the value of the {@link #IS_ACTIVE IS_ACTIVE} property as defined
374 * by this proxy.
375 *
376 * @return <b>true</b> if the user is active; <b>false</b> if not.
377 *
378 * @throws WvcmException if this proxy does not define a value for the
379 * {@link #CQ_MASTER_REPLICA CQ_MASTER_REPLICA} property.
380 */
381 boolean getIsActive() throws WvcmException;
382
383 /**
384 * Defines a new value for the {@link #IS_ACTIVE IS_ACTIVE} property of this
385 * proxy.
386 *
387 * @param active <b>true</b> to make this user active; <b>false</b> to
388 * make the user inactive.
389 */
390 void setIsActive(boolean active);
391
392 /**
393 * The value of this property is an StpProperty.List containing an
394 * StpProperty<Boolean> object for each user privilege defined by
395 * ClearQuest. The Boolean value of each property indicates whether or not
396 * this user has the privilege denoted by the property. The properties that
397 * appear in this list are determined by the UserPrivilegeMaskType
398 * enumeration defined by ClearQuest. The values in this enumeration known
399 * at the time of release are defined by this API specification; others may
400 * be subsequently defined and, if so, will also appear in this list.
401 * <p>
402 * Any of the privileges enumerated in the USER_PRIVILEGES property can be
403 * granted or denied to the user by using Resource.setProperty to assign the
404 * particular property either Boolean.TRUE or Boolean.FALSE.
405 */
406 static PropertyName<List<StpProperty<Boolean>>> USER_PRIVILEGES =
407 new PropertyName<List<StpProperty<Boolean>>>(PROPERTY_NAMESPACE,
408 "user-privileges");
409
410 /**
411 * Returns the value of the {@link #USER_PRIVILEGES USER_PRIVILEGES}
412 * property as defined by this proxy.
413 *
414 * @return A List containing one StpProperty object for each privilege
415 * defined by ClearQuest. Will never be <b>null</b>.
416 *
417 * @throws WvcmException if this proxy does not define a value for the
418 * {@link #USER_PRIVILEGES USER_PRIVILEGES} property.
419 */
420 List<StpProperty<Boolean>> getUserPrivileges() throws WvcmException;
421
422 /**
423 * Answers whether or not this user can create and manage dynamic lists.
424 */
425 static PropertyName<Boolean> IS_DYNAMIC_LIST_ADMIN =
426 new PropertyName<Boolean>(PROPERTY_NAMESPACE, "is-dynamic-list-admin");
427
428 /**
429 * Returns the value of the
430 * {@link #IS_DYNAMIC_LIST_ADMIN IS_DYNAMIC_LIST_ADMIN} property as defined
431 * by this proxy.
432 *
433 * @return <b>true</b> if the user is permitted to edit dynamic choice
434 * lists; <b>false</b> if the user may not.
435 *
436 * @throws WvcmException if this proxy does not define a value for the
437 * {@link #IS_DYNAMIC_LIST_ADMIN IS_DYNAMIC_LIST_ADMIN}
438 * property.
439 */
440 boolean getIsDynamicListAdmin() throws WvcmException;
441
442 /**
443 * Defines a new value for the
444 * {@link #IS_DYNAMIC_LIST_ADMIN IS_DYNAMIC_LIST_ADMIN} property of this
445 * proxy.
446 *
447 * @param permitted <b>true</b> to permit this user to edit dynamic choice
448 * lists; <b>false</b> to deny the user this ability.
449 */
450 void setIsDynamicListAdmin(boolean permitted);
451
452 /**
453 * Answers whether or not this user can create, delete, or update resources
454 * in the public folders heirarcy used for queries, reports, and charts.
455 */
456 static PropertyName<Boolean> IS_PUBLIC_FOLDER_ADMIN =
457 new PropertyName<Boolean>(PROPERTY_NAMESPACE, "is-public-folder-admin");
458
459 /**
460 * Returns the value of the
461 * {@link #IS_PUBLIC_FOLDER_ADMIN IS_PUBLIC_FOLDER_ADMIN} property as
462 * defined by this proxy.
463 *
464 * @return <b>true</b> if the user is permitted to edit public folders;
465 * <b>false</b> if the user may not.
466 *
467 * @throws WvcmException if this proxy does not define a value for the
468 * {@link #IS_PUBLIC_FOLDER_ADMIN IS_PUBLIC_FOLDER_ADMIN}
469 * property.
470 */
471 boolean getIsPublicFolderAdmin() throws WvcmException;
472
473 /**
474 * Defines a new value for the
475 * {@link #IS_PUBLIC_FOLDER_ADMIN IS_PUBLIC_FOLDER_ADMIN} property of this
476 * proxy.
477 *
478 * @param permitted <b>true</b> to permit this user to edit public folders;
479 * <b>false</b> to deny the user this ability.
480 */
481 void setIsPublicFolderAdmin(boolean permitted);
482
483 /**
484 * Answers whether or not this user can access and manage secure records and
485 * fields as well as edit the context group list field for a security context
486 * record and view all records.
487 */
488 static PropertyName<Boolean> IS_SECURITY_ADMIN =
489 new PropertyName<Boolean>(PROPERTY_NAMESPACE, "is-security-admin");
490
491 /**
492 * Returns the value of the {@link #IS_SECURITY_ADMIN IS_SECURITY_ADMIN}
493 * property as defined by this proxy.
494 *
495 * @return <b>true</b> if the user is permitted to edit security
496 * components; <b>false</b> if the user may not.
497 *
498 * @throws WvcmException if this proxy does not define a value for the
499 * {@link #IS_SECURITY_ADMIN IS_SECURITY_ADMIN } property.
500 */
501 boolean getIsSecurityAdmin() throws WvcmException;
502
503 /**
504 * Defines a new value for the {@link #IS_SECURITY_ADMIN IS_SECURITY_ADMIN }
505 * property of this proxy.
506 *
507 * @param permitted <b>true</b> to permit this user to edit security
508 * components; <b>false</b> to deny the user this ability.
509 */
510 void setIsSecurityAdmin(boolean permitted);
511
512 /**
513 * Answers whether or not this user can create (either from scratch or
514 * through modification of an existing query) a query defined by a raw SQL
515 * string.
516 */
517 static PropertyName<Boolean> IS_RAW_SQL_WRITER =
518 new PropertyName<Boolean>(PROPERTY_NAMESPACE, "is-raw-sql-writer");
519
520 /**
521 * Returns the value of the {@link #IS_RAW_SQL_WRITER IS_RAW_SQL_WRITER }
522 * property as defined by this proxy.
523 *
524 * @return <b>true</b> if the user is permitted to edit raw SQL in queries;
525 * <b>false</b> if the user may not.
526 *
527 * @throws WvcmException if this proxy does not define a value for the
528 * {@link #IS_RAW_SQL_WRITER IS_RAW_SQL_WRITER } property.
529 */
530 boolean getIsRawSqlWriter() throws WvcmException;
531
532 /**
533 * Defines a new value for the {@link #IS_RAW_SQL_WRITER IS_RAW_SQL_WRITER }
534 * property of this proxy.
535 *
536 * @param permitted <b>true</b> to permit this user to edit raw SQL in
537 * queries; <b>false</b> to deny the user this ability.
538 */
539 void setIsRawSqlWriter(boolean permitted);
540
541 /**
542 * Answers whether or not this user can view information about all users and
543 * groups in user databases.
544 */
545 static PropertyName<Boolean> IS_ALL_USERS_VISIBLE =
546 new PropertyName<Boolean>(PROPERTY_NAMESPACE, "is-all-users-visible");
547
548 /**
549 * Returns the value of the
550 * {@link #IS_ALL_USERS_VISIBLE IS_ALL_USERS_VISIBLE } property as defined
551 * by this proxy.
552 *
553 * @return <b>true</b> if the user is permitted to see all users and groups; <b>false</b>
554 * if the user may not.
555 *
556 * @throws WvcmException if this proxy does not define a value for the
557 * {@link #IS_ALL_USERS_VISIBLE IS_ALL_USERS_VISIBLE } property.
558 */
559 boolean getIsAllUsersVisible() throws WvcmException;
560
561 /**
562 * Defines a new value for the
563 * {@link #IS_ALL_USERS_VISIBLE IS_ALL_USERS_VISIBLE } property of this
564 * proxy.
565 *
566 * @param permitted <b>true</b> to permit this user to see all users;
567 * <b>false</b> to deny the user this ability.
568 */
569 void setIsAllUsersVisible(boolean permitted);
570
571 /**
572 * Answers whether or not this user has multisite administrator privileges.
573 */
574 static PropertyName<Boolean> IS_MULTI_SITE_ADMIN =
575 new PropertyName<Boolean>(PROPERTY_NAMESPACE, "is-multi-site-admin");
576
577 /**
578 * Returns the value of the
579 * {@link #IS_MULTI_SITE_ADMIN IS_MULTI_SITE_ADMIN } property as defined by
580 * this proxy.
581 *
582 * @return <b>true</b> if the user is permitted to edit multisite
583 * components; <b>false</b> if the user may not.
584 *
585 * @throws WvcmException if this proxy does not define a value for the
586 * {@link #IS_MULTI_SITE_ADMIN IS_MULTI_SITE_ADMIN } property.
587 */
588 boolean getIsMultiSiteAdmin() throws WvcmException;
589
590 /**
591 * Defines a new value for the
592 * {@link #IS_MULTI_SITE_ADMIN IS_MULTI_SITE_ADMIN } property of this proxy.
593 *
594 * @param permitted <b>true</b> to permit this user to edit multi-site
595 * components; <b>false</b> to deny the user this ability.
596 */
597 void setIsMultiSiteAdmin(boolean permitted);
598
599 /**
600 * Answers whether or not this user has been granted all privileges and can
601 * also create and delete databases and schemas and edit ClearQuest Web
602 * settings. The administrator account has this privilege.
603 */
604 static PropertyName<Boolean> IS_SUPER_USER =
605 new PropertyName<Boolean>(PROPERTY_NAMESPACE, "is-super-user");
606
607 /**
608 * Returns the value of the {@link #IS_SUPER_USER IS_SUPER_USER } property
609 * as defined by this proxy.
610 *
611 * @return <b>true</b> if the user is permitted to be super user; <b>false</b>
612 * if the user may not.
613 *
614 * @throws WvcmException if this proxy does not define a value for the
615 * {@link #IS_SUPER_USER IS_SUPER_USER } property.
616 */
617 boolean getIsSuperUser() throws WvcmException;
618
619 /**
620 * Defines a new value for the {@link #IS_SUPER_USER } property of this
621 * proxy.
622 *
623 * @param permitted <b>true</b> to permit this user to be super user;
624 * <b>false</b> to deny the user this ability.
625 */
626 void setIsSuperUser(boolean permitted);
627
628 /**
629 * Answers whether or not this user can create and modify schemas, update
630 * existing databases, and create, modify, and save public queries, charts, and
631 * reports (but not perform user administrator tasks).
632 */
633 PropertyName<Boolean> IS_APP_BUILDER =
634 new PropertyName<Boolean>(PROPERTY_NAMESPACE, "is-app-builder");
635
636 /**
637 * Returns the value of the {@link #IS_APP_BUILDER IS_APP_BUILDER } property
638 * as defined by this proxy.
639 *
640 * @return <b>true</b> if the user is permitted to edit schemas; <b>false</b>
641 * if the user may not.
642 *
643 * @throws WvcmException if this proxy does not define a value for the
644 * {@link #IS_APP_BUILDER IS_APP_BUILDER } property.
645 */
646 boolean getIsAppBuilder() throws WvcmException;
647
648 /**
649 * Defines a new value for the {@link #IS_APP_BUILDER IS_APP_BUILDER }
650 * property of this proxy.
651 *
652 * @param permitted <b>true</b> to permit this user to edit schemas;
653 * <b>false</b> to deny the user this ability.
654 */
655 void setIsAppBuilder(boolean permitted);
656
657 /**
658 * Answers whether or not this user can create users and user groups and
659 * assign and modify their user-access privileges.
660 */
661 PropertyName<Boolean> IS_USER_MAINTAINER =
662 new PropertyName<Boolean>(PROPERTY_NAMESPACE, "is-user-maintainer");
663
664 /**
665 * Returns the value of the {@link #IS_USER_MAINTAINER IS_USER_MAINTAINER }
666 * property as defined by this proxy.
667 *
668 * @return <b>true</b> if the user is permitted to edit user and groups
669 * artifacts; <b>false</b> if the user may not.
670 *
671 * @throws WvcmException if this proxy does not define a value for the
672 * {@link #IS_USER_MAINTAINER IS_USER_MAINTAINER } property.
673 */
674 boolean getIsUserMaintainer() throws WvcmException;
675
676 /**
677 * Defines a new value for the
678 * {@link #IS_USER_MAINTAINER IS_USER_MAINTAINER } property of this proxy.
679 *
680 * @param permitted <b>true</b> to permit this user to edit user and group
681 * artifacts; <b>false</b> to deny the user this ability.
682 */
683 void setIsUserMaintainer(boolean permitted);
684
685 /**
686 * Answers whether or not this user is automatically subscribed to all
687 * databases of the DbSet.
688 */
689 static PropertyName<Boolean> IS_SUBSCRIBED_TO_ALL_DATABASES =
690 new PropertyName<Boolean>(PROPERTY_NAMESPACE,
691 "is-subscribed-to-all-databases");
692
693 /**
694 * Returns the value of the
695 * {@link #IS_SUBSCRIBED_TO_ALL_DATABASES IS_SUBSCRIBED_TO_ALL_DATABASES }
696 * property as defined by this proxy.
697 *
698 * @return <b>true</b> if the user is subscribed to all databases; <b>false</b>
699 * if the user is subscribed only to those databases enumerated on
700 * the SUBSCRIBED_DATABASES list.
701 *
702 * @throws WvcmException if this proxy does not define a value for the
703 * {@link #IS_SUBSCRIBED_TO_ALL_DATABASES IS_SUBSCRIBED_TO_ALL_DATABASES }
704 * property.
705 */
706 boolean getIsSubscribedToAllDatabases() throws WvcmException;
707
708 /**
709 * Defines a new value for the
710 * {@link #IS_SUBSCRIBED_TO_ALL_DATABASES IS_SUBSCRIBED_TO_ALL_DATABASES }
711 * property of this proxy.
712 *
713 * @param permitted <b>true</b> to automatically subscribe the user to all
714 * databases current and future; <b>false</b> to require the
715 * user to subscribe to each database individually.
716 */
717 void setIsSubscribedToAllDatabases(boolean permitted);
718
719 /**
720 * The replica that masters this user
721 */
722 PropertyName<CqReplica> CQ_MASTER_REPLICA =
723 new PropertyName<CqReplica>(PROPERTY_NAMESPACE, "cq-master-replica");
724
725 /**
726 * Returns the value of the {@link #CQ_MASTER_REPLICA CQ_MASTER_REPLICA} property
727 * as defined by this proxy.
728 *
729 * @return A CqReplica proxy for the replica that masters this user. Will
730 * never be <b>null</b>.
731 *
732 * @throws WvcmException if this proxy does not define a value for the
733 * {@link #CQ_MASTER_REPLICA CQ_MASTER_REPLICA} property.
734 */
735 CqReplica getCqMasterReplica() throws WvcmException;
736
737 /**
738 * Defines a new value for the {@link #CQ_MASTER_REPLICA CQ_MASTER_REPLICA}
739 * property of this proxy.
740 *
741 * @param value A CqReplica proxy specifying the replica that is to assume
742 * mastership of this user resource.
743 */
744 void setCqMasterReplica(CqReplica value);
745
746 /**
747 * Creates a new user whose ClearQuest login name will be the same as the
748 * Name field of this proxy's location. The new user is created in the DbSet
749 * named by the Repo field of that location. The location is of the form
750 *
751 * <pre>
752 * cq.user:<login-name>@<db-set-name>
753 * </pre>
754 *
755 * If the LOGIN_NAME property is not set, it will default to the Name field
756 * of this proxy's location.
757 * <p>
758 * If the AUTHENTICATION_MODE is CLEAR_QUEST, the value of the LOGIN_NAME
759 * property of this proxy, if set, is ignored and forced to be the same as
760 * the Name field of this proxy's location. The AUTHENTICATOR should be the
761 * user's ClearQuest password.
762 * <p>
763 * If the AUTHENTICATION_MODE is LDAP, then the AUTHENTICATOR should be set
764 * to the LDAP authentication name that is to correspond to this user. An
765 * LDAP attribute value is copied from the LDAP user account to a ClearQuest
766 * user profile field as specified by the value of
767 * {@link CqDb#LDAP_PROPERTY}. This method first checks the DbSet to ensure
768 * that there is no conflict with another active LDAP-enabled user's
769 * LDAP_PROPERTY value to ensure that the values are unique across active
770 * LDAP enabled users. If the LDAP_PROPERTY is LOGIN_NAME_FIELD, the
771 * login-name must be identical to LOGIN_NAME.
772 *
773 * @param feedback Specifies optional feedback to the caller.
774 * @return A proxy for this new resource, whose properties are specified by
775 * feedback.
776 * @throws WvcmException ReasonCode:
777 * <li>{@link javax.wvcm.WvcmException.ReasonCode#RESOURCE_ALREADY_EXISTS_AT_LOCATION RESOURCE_ALREADY_EXISTS_AT_LOCATION}:
778 * If a resource already exists at the location of this
779 * Resource, the request MUST fail.
780 * <li>{@link javax.wvcm.WvcmException.ReasonCode#CANNOT_CREATE_AT_THIS_LOCATION CANNOT_CREATE_AT_THIS_LOCATION}:
781 * If the location of this Group does not identify a valid
782 * location in which to create a group, the request MUST fail.
783 * Groups must be created in a DbSet
784 */
785 CqUser doCreateUser(Feedback feedback) throws WvcmException;
786
787 /**
788 * Attempts to upgrade the user account information in all the user
789 * databases that this user is currently subscribed to.
790 *
791 * Any dirty properties of this proxy are written to the DbSet before the
792 * upgrading of user databases is attempted. If the property updates fail,
793 * no attempt is made to upgrade the subscribed databases.
794 *
795 * @param feedback Specifies optional feedback to the caller. The databases
796 * being upgraded are considered to be resources modified by this
797 * operation and will generate calls to
798 * {@link javax.wvcm.DetailedFeedback#notifyIsModified(javax.wvcm.Resource)}
799 * if requested.
800 * @return A proxy for this resource after the upgrade is complete, with
801 * properties as specified by feedback.
802 * @throws WvcmException if any dirty properties could not be updated.
803 * @throws StpPartialResultsException if any of the subscribed databases
804 * could not be upgraded, with the failed updates indicated by
805 * nested exceptions of this exception.
806 */
807 CqUser doUpgradeDatabases(Feedback feedback) throws WvcmException;
808 }