1 package edu.internet2.middleware.grouper.app.provisioning;
2
3 import java.lang.reflect.Array;
4 import java.util.ArrayList;
5 import java.util.Collection;
6 import java.util.HashMap;
7 import java.util.HashSet;
8 import java.util.LinkedHashMap;
9 import java.util.List;
10 import java.util.Map;
11 import java.util.Set;
12 import java.util.TreeMap;
13 import java.util.TreeSet;
14
15 import org.apache.commons.lang.StringUtils;
16
17 import edu.internet2.middleware.grouper.app.loader.GrouperLoaderConfig;
18 import edu.internet2.middleware.grouper.cfg.text.GrouperTextContainer;
19 import edu.internet2.middleware.grouper.util.GrouperUtil;
20 import edu.internet2.middleware.grouperClient.collections.MultiKey;
21 import edu.internet2.middleware.grouperClient.jdbc.tableSync.GcGrouperSync;
22 import edu.internet2.middleware.grouperClient.jdbc.tableSync.GcGrouperSyncDao;
23 import edu.internet2.middleware.grouperClient.jdbc.tableSync.GcGrouperSyncJob;
24 import edu.internet2.middleware.grouperClient.jdbc.tableSync.GcGrouperSyncLogState;
25 import edu.internet2.middleware.grouperClient.util.GrouperClientUtils;
26 import edu.internet2.middleware.subject.provider.SourceManager;
27
28
29
30
31
32
33 public abstract class GrouperProvisioningConfiguration {
34
35
36
37
38
39 private int numberOfMessagesToProcessEachIncremental = 5000;
40
41
42
43
44
45
46
47 public int getNumberOfMessagesToProcessEachIncremental() {
48 return numberOfMessagesToProcessEachIncremental;
49 }
50
51
52
53
54
55
56 public void setNumberOfMessagesToProcessEachIncremental(
57 int numberOfMessagesToProcessEachIncremental) {
58 this.numberOfMessagesToProcessEachIncremental = numberOfMessagesToProcessEachIncremental;
59 }
60
61
62
63
64 private int threadPoolSize = 5;
65
66
67
68
69 private Set<String> logAllObjectsVerboseForTheseSubjectIds = new HashSet<String>();
70
71
72
73
74
75 public Set<String> getLogAllObjectsVerboseForTheseSubjectIds() {
76 return logAllObjectsVerboseForTheseSubjectIds;
77 }
78
79
80
81
82
83 public Set<String> getLogAllObjectsVerboseForTheseGroupNames() {
84 return logAllObjectsVerboseForTheseGroupNames;
85 }
86
87
88
89
90 private boolean logCertainObjects;
91
92
93
94
95
96 public boolean isLogCertainObjects() {
97 return logCertainObjects;
98 }
99
100
101
102
103
104 public void setLogCertainObjects(boolean logCertainObjects) {
105 this.logCertainObjects = logCertainObjects;
106 }
107
108
109
110
111 private Set<String> logAllObjectsVerboseGroupAttributes = new HashSet<String>();
112
113
114
115
116 private Set<String> logAllObjectsVerboseEntityAttributes = new HashSet<String>();
117
118
119
120
121
122 public Set<String> getLogAllObjectsVerboseGroupAttributes() {
123 return logAllObjectsVerboseGroupAttributes;
124 }
125
126
127
128
129
130 public Set<String> getLogAllObjectsVerboseEntityAttributes() {
131 return logAllObjectsVerboseEntityAttributes;
132 }
133
134
135
136
137 private Set<String> logAllObjectsVerboseForTheseGroupNames = new HashSet<String>();
138
139
140
141
142
143 public int getThreadPoolSize() {
144 return this.threadPoolSize;
145 }
146
147 private boolean customizeEntityCrud;
148
149 public boolean isCustomizeEntityCrud() {
150 return customizeEntityCrud;
151 }
152
153 public void setCustomizeEntityCrud(boolean customizeEntityCrud) {
154 this.customizeEntityCrud = customizeEntityCrud;
155 }
156
157
158
159
160
161
162 private boolean errorHandlingProvisionerDaemonShouldFailOnObjectError = true;
163
164
165
166
167
168
169
170 public boolean isErrorHandlingProvisionerDaemonShouldFailOnObjectError() {
171 return errorHandlingProvisionerDaemonShouldFailOnObjectError;
172 }
173
174
175
176
177
178
179
180 public void setErrorHandlingProvisionerDaemonShouldFailOnObjectError(
181 boolean errorHandlingProvisionerDaemonShouldFailOnObjectError) {
182 this.errorHandlingProvisionerDaemonShouldFailOnObjectError = errorHandlingProvisionerDaemonShouldFailOnObjectError;
183 }
184
185
186
187
188 private float errorHandlingPercentLevel1 = 1;
189
190
191
192
193 private float errorHandlingMinutesLevel1 = 180;
194
195
196
197
198 private float errorHandlingPercentLevel2 = 5;
199
200
201
202
203 private float errorHandlingMinutesLevel2 = 120;
204
205
206
207
208 private float errorHandlingPercentLevel3 = 10;
209
210
211
212
213 private float errorHandlingMinutesLevel3 = 12;
214
215
216
217
218 private float errorHandlingPercentLevel4 = 100;
219
220
221
222
223 private float errorHandlingMinutesLevel4 = 3;
224
225
226 public float getErrorHandlingPercentLevel1() {
227 return errorHandlingPercentLevel1;
228 }
229
230
231 public float getErrorHandlingMinutesLevel1() {
232 return errorHandlingMinutesLevel1;
233 }
234
235
236 public float getErrorHandlingPercentLevel2() {
237 return errorHandlingPercentLevel2;
238 }
239
240
241 public float getErrorHandlingMinutesLevel2() {
242 return errorHandlingMinutesLevel2;
243 }
244
245
246 public float getErrorHandlingPercentLevel3() {
247 return errorHandlingPercentLevel3;
248 }
249
250
251 public float getErrorHandlingMinutesLevel3() {
252 return errorHandlingMinutesLevel3;
253 }
254
255
256 public float getErrorHandlingPercentLevel4() {
257 return errorHandlingPercentLevel4;
258 }
259
260
261 public float getErrorHandlingMinutesLevel4() {
262 return errorHandlingMinutesLevel4;
263 }
264
265
266
267
268
269
270 private boolean errorHandlingLogErrors = true;
271
272
273
274
275
276
277
278 public boolean isErrorHandlingLogErrors() {
279 return errorHandlingLogErrors;
280 }
281
282
283
284
285
286
287
288 public void setErrorHandlingLogErrors(boolean errorHandlingLogErrors) {
289 this.errorHandlingLogErrors = errorHandlingLogErrors;
290 }
291
292
293
294
295
296
297 private int errorHandlingLogCountPerType = 5;
298
299
300
301
302
303
304
305 public int getErrorHandlingLogCountPerType() {
306 return errorHandlingLogCountPerType;
307 }
308
309
310
311
312
313
314
315 public void setErrorHandlingLogCountPerType(int errorHandlingLogCountPerType1) {
316 this.errorHandlingLogCountPerType = errorHandlingLogCountPerType1;
317 }
318
319
320
321
322
323
324 private boolean errorHandlingInvalidDataIsAnError = true;
325
326
327
328
329
330
331
332 public boolean isErrorHandlingInvalidDataIsAnError() {
333 return errorHandlingInvalidDataIsAnError;
334 }
335
336
337
338
339
340
341
342 public void setErrorHandlingInvalidDataIsAnError(boolean errorHandlingInvalidDataIsAnError) {
343 this.errorHandlingInvalidDataIsAnError = errorHandlingInvalidDataIsAnError;
344 }
345
346
347
348
349
350
351 private boolean errorHandlingLengthValidationIsAnError = true;
352
353
354
355
356
357
358
359 public boolean isErrorHandlingLengthValidationIsAnError() {
360 return errorHandlingLengthValidationIsAnError;
361 }
362
363
364
365
366
367
368
369 public void setErrorHandlingLengthValidationIsAnError(boolean errorHandlingLengthValidationIsAnError) {
370 this.errorHandlingLengthValidationIsAnError = errorHandlingLengthValidationIsAnError;
371 }
372
373
374
375
376
377
378 private boolean errorHandlingMatchingValidationIsAnError = true;
379
380
381
382
383
384
385
386 public boolean isErrorHandlingMatchingValidationIsAnError() {
387 return this.errorHandlingMatchingValidationIsAnError;
388 }
389
390
391
392
393
394
395
396 public void setErrorHandlingMatchingValidationIsAnError(boolean errorHandlingMatchingValidationIsAnError1) {
397 this.errorHandlingMatchingValidationIsAnError = errorHandlingMatchingValidationIsAnError1;
398 }
399
400
401
402
403
404
405 private boolean errorHandlingRequiredValidationIsAnError = true;
406
407
408
409
410
411
412
413 public boolean isErrorHandlingRequiredValidationIsAnError() {
414 return errorHandlingRequiredValidationIsAnError;
415 }
416
417
418
419
420
421
422
423 public void setErrorHandlingRequiredValidationIsAnError(boolean errorHandlingRequiredValidationIsAnError) {
424 this.errorHandlingRequiredValidationIsAnError = errorHandlingRequiredValidationIsAnError;
425 }
426
427
428
429
430
431
432 private boolean errorHandlingTargetObjectDoesNotExistIsAnError = true;
433
434
435
436
437
438
439
440 public boolean isErrorHandlingTargetObjectDoesNotExistIsAnError() {
441 return errorHandlingTargetObjectDoesNotExistIsAnError;
442 }
443
444
445
446
447
448
449
450 public void setErrorHandlingTargetObjectDoesNotExistIsAnError(boolean errorHandlingTargetObjectDoesNotExistIsAnError) {
451 this.errorHandlingTargetObjectDoesNotExistIsAnError = errorHandlingTargetObjectDoesNotExistIsAnError;
452 }
453
454
455
456 private boolean makeChangesToEntities;
457
458
459
460 public boolean isMakeChangesToEntities() {
461 return makeChangesToEntities;
462 }
463
464 public void setMakeChangesToEntities(boolean makeChangesToEntities) {
465 this.makeChangesToEntities = makeChangesToEntities;
466 }
467
468 private boolean customizeMembershipCrud;
469
470 public boolean isCustomizeMembershipCrud() {
471 return customizeMembershipCrud;
472 }
473
474
475
476 private String subjectIdentifierForMemberSyncTable;
477
478
479
480
481 public String getSubjectIdentifierForMemberSyncTable() {
482 return subjectIdentifierForMemberSyncTable;
483 }
484
485 public void setCustomizeMembershipCrud(boolean customizeMembershipCrud) {
486 this.customizeMembershipCrud = customizeMembershipCrud;
487 }
488
489 private boolean onlyAddMembershipsIfUserExistsInTarget;
490
491
492
493
494 public boolean isOnlyAddMembershipsIfUserExistsInTarget() {
495 return onlyAddMembershipsIfUserExistsInTarget;
496 }
497
498 private boolean customizeGroupCrud;
499
500 public boolean isCustomizeGroupCrud() {
501 return customizeGroupCrud;
502 }
503
504
505
506
507
508
509 public void setCustomizeGroupCrud(boolean customizeGroupCrud) {
510 this.customizeGroupCrud = customizeGroupCrud;
511 }
512
513
514 private boolean groupsRequireMembers;
515
516 private boolean hasEntityAttributes;
517
518 private boolean resolveAttributesWithSql;
519
520 private boolean resolveAttributesWithLdap;
521
522 private boolean useGlobalSqlResolver;
523 private boolean useGlobalLdapResolver;
524
525 private String globalSqlResolver;
526
527 private String globalLdapResolver;
528
529 private boolean selectAllSqlOnFull = true;
530 private boolean filterAllLDAPOnFull = true;
531
532 private boolean loadEntitiesToGrouperTable;
533
534
535 private String entityAttributesSqlExternalSystem;
536 private String entityAttributesTableViewName;
537 private String entityAttributesColumnNames;
538 private String entityAttributesSubjectSourceIdColumn;
539 private String entityAttributesSubjectSearchMatchingColumn;
540 private String entityAttributesSqlMappingType;
541 private String entityAttributesSqlMappingEntityAttribute;
542 private String entityAttributesSqlMappingExpression;
543 private String entityAttributesLastUpdatedColumn;
544 private String entityAttributesLastUpdatedType;
545
546 private String entityAttributesLdapExternalSystem;
547 private String entityAttributesLdapBaseDn;
548 private String entityAttributesLdapSubjectSource;
549 private String entityAttributesLdapSearchScope;
550 private String entityAttributesLdapFilterPart;
551 private String entityAttributesLdapAttributes;
552 private String entityAttributesLdapMutliValuedAttributes;
553 private String entityAttributesLdapMatchingSearchAttribute;
554 private String entityAttributesLdapMappingType;
555 private String entityAttributesLdapMappingEntityAttribute;
556 private String entityAttributesLdapMatchingExpression;
557 private String entityAttributesLdapLastUpdatedAttribute;
558 private String entityAttributesLdapLastUpdatedAttributeFormat;
559
560 private String searchAttributeNameToRetrieveEntities;
561
562
563 public String getSearchAttributeNameToRetrieveEntities() {
564 return searchAttributeNameToRetrieveEntities;
565 }
566
567
568 public void setSearchAttributeNameToRetrieveEntities(
569 String searchAttributeNameToRetrieveEntities) {
570 this.searchAttributeNameToRetrieveEntities = searchAttributeNameToRetrieveEntities;
571 }
572
573 public boolean isFilterAllLDAPOnFull() {
574 return filterAllLDAPOnFull;
575 }
576
577
578
579
580
581
582 public String getEntityAttributesLdapExternalSystem() {
583 return entityAttributesLdapExternalSystem;
584 }
585
586
587
588
589
590
591 public String getEntityAttributesLdapBaseDn() {
592 return entityAttributesLdapBaseDn;
593 }
594
595
596
597
598
599
600 public String getEntityAttributesLdapSearchScope() {
601 return entityAttributesLdapSearchScope;
602 }
603
604
605
606
607
608
609 public String getEntityAttributesLdapFilterPart() {
610 return entityAttributesLdapFilterPart;
611 }
612
613
614
615
616
617
618 public String getEntityAttributesLdapAttributes() {
619 return entityAttributesLdapAttributes;
620 }
621
622
623
624
625
626
627 public String getEntityAttributesLdapMutliValuedAttributes() {
628 return entityAttributesLdapMutliValuedAttributes;
629 }
630
631
632
633
634
635
636 public String getEntityAttributesLdapMatchingSearchAttribute() {
637 return entityAttributesLdapMatchingSearchAttribute;
638 }
639
640
641
642
643
644
645 public String getEntityAttributesLdapMappingType() {
646 return entityAttributesLdapMappingType;
647 }
648
649
650
651
652
653
654 public String getEntityAttributesLdapMappingEntityAttribute() {
655 return entityAttributesLdapMappingEntityAttribute;
656 }
657
658
659
660
661
662
663 public String getEntityAttributesLdapMatchingExpression() {
664 return entityAttributesLdapMatchingExpression;
665 }
666
667
668
669
670
671
672 public String getEntityAttributesLdapLastUpdatedAttribute() {
673 return entityAttributesLdapLastUpdatedAttribute;
674 }
675
676
677
678
679
680
681 public String getEntityAttributesLdapLastUpdatedAttributeFormat() {
682 return entityAttributesLdapLastUpdatedAttributeFormat;
683 }
684
685
686
687
688
689 public boolean isUseGlobalLdapResolver() {
690 return useGlobalLdapResolver;
691 }
692
693
694
695
696
697 public String getGlobalLdapResolver() {
698 return globalLdapResolver;
699 }
700
701
702
703
704 public String getEntityAttributesSqlExternalSystem() {
705 return entityAttributesSqlExternalSystem;
706 }
707
708
709
710
711 public String getEntityAttributesTableViewName() {
712 return entityAttributesTableViewName;
713 }
714
715
716
717
718 public String getEntityAttributesColumnNames() {
719 return entityAttributesColumnNames;
720 }
721
722
723
724
725
726 public String getEntityAttributesSubjectSourceIdColumn() {
727 return entityAttributesSubjectSourceIdColumn;
728 }
729
730
731
732
733 public String getEntityAttributesSubjectSearchMatchingColumn() {
734 return entityAttributesSubjectSearchMatchingColumn;
735 }
736
737
738
739
740 public String getEntityAttributesSqlMappingType() {
741 return entityAttributesSqlMappingType;
742 }
743
744
745
746
747 public String getEntityAttributesSqlMappingEntityAttribute() {
748 return entityAttributesSqlMappingEntityAttribute;
749 }
750
751
752
753
754 public String getEntityAttributesSqlMappingExpression() {
755 return entityAttributesSqlMappingExpression;
756 }
757
758
759
760
761 public String getEntityAttributesLastUpdatedColumn() {
762 return entityAttributesLastUpdatedColumn;
763 }
764
765
766
767
768 public String getEntityAttributesLastUpdatedType() {
769 return entityAttributesLastUpdatedType;
770 }
771
772
773
774 public boolean isHasEntityAttributes() {
775 return hasEntityAttributes;
776 }
777
778
779
780 public boolean isResolveAttributesWithSql() {
781 return resolveAttributesWithSql;
782 }
783
784
785 public boolean isResolveAttributesWithLdap() {
786 return resolveAttributesWithLdap;
787 }
788
789
790 public boolean isUseGlobalSqlResolver() {
791 return useGlobalSqlResolver;
792 }
793
794
795
796 public String getGlobalSqlResolver() {
797 return globalSqlResolver;
798 }
799
800
801
802 public boolean isSelectAllSqlOnFull() {
803 return selectAllSqlOnFull;
804 }
805
806
807 public boolean isLoadEntitiesToGrouperTable() {
808 return loadEntitiesToGrouperTable;
809 }
810
811
812
813
814 private String groupIdOfUsersNotToProvision;
815
816
817
818
819
820 public String getGroupIdOfUsersNotToProvision() {
821 return groupIdOfUsersNotToProvision;
822 }
823
824
825
826
827
828 public void setGroupIdOfUsersNotToProvision(String groupIdOfUsersNotToProvision) {
829 this.groupIdOfUsersNotToProvision = groupIdOfUsersNotToProvision;
830 }
831
832
833
834
835 private String groupIdOfUsersToProvision;
836
837
838
839
840
841 public String getGroupIdOfUsersToProvision() {
842 return groupIdOfUsersToProvision;
843 }
844
845
846
847
848 private Boolean createGroupDuringDiagnostics;
849
850
851
852
853
854 public boolean isCreateGroupDuringDiagnostics() {
855 return GrouperUtil.booleanValue(createGroupDuringDiagnostics, false);
856 }
857
858
859
860
861 private Boolean deleteGroupDuringDiagnostics;
862
863
864
865
866
867 public boolean isDeleteGroupDuringDiagnostics() {
868 return GrouperUtil.booleanValue(deleteGroupDuringDiagnostics, false);
869 }
870
871
872
873
874 private Boolean createMembershipDuringDiagnostics;
875
876
877
878
879 private Boolean deleteMembershipDuringDiagnostics;
880
881 public boolean isCreateMembershipDuringDiagnostics() {
882 return GrouperUtil.booleanValue(createMembershipDuringDiagnostics, false);
883 }
884
885 public boolean isDeleteMembershipDuringDiagnostics() {
886 return GrouperUtil.booleanValue(deleteMembershipDuringDiagnostics, false);
887 }
888
889
890 public void setCreateMembershipDuringDiagnostics(
891 Boolean createMembershipDuringDiagnostics) {
892 this.createMembershipDuringDiagnostics = createMembershipDuringDiagnostics;
893 }
894
895
896
897 public void setDeleteMembershipDuringDiagnostics(
898 Boolean deleteMembershipDuringDiagnostics) {
899 this.deleteMembershipDuringDiagnostics = deleteMembershipDuringDiagnostics;
900 }
901
902
903
904
905 private Boolean createEntityDuringDiagnostics;
906
907
908
909
910
911 public boolean isCreateEntityDuringDiagnostics() {
912 return GrouperUtil.booleanValue(createEntityDuringDiagnostics, false);
913 }
914
915
916
917
918 private Boolean deleteEntityDuringDiagnostics;
919
920
921
922
923
924 public boolean isDeleteEntityDuringDiagnostics() {
925 return GrouperUtil.booleanValue(deleteEntityDuringDiagnostics, false);
926 }
927
928
929
930
931 private Boolean diagnosticsGroupsAllSelect;
932
933
934
935
936
937 public boolean isDiagnosticsGroupsAllSelect() {
938 if (this.diagnosticsGroupsAllSelect != null) {
939 return this.diagnosticsGroupsAllSelect;
940 }
941 return false;
942 }
943
944
945
946
947 private Boolean diagnosticsEntitiesAllSelect;
948
949
950
951
952
953 public boolean isDiagnosticsEntitiesAllSelect() {
954 if (this.diagnosticsEntitiesAllSelect != null) {
955 return this.diagnosticsEntitiesAllSelect;
956 }
957 return false;
958 }
959
960
961
962
963 private String diagnosticsGroupName;
964
965
966
967
968
969 public String getDiagnosticsGroupName() {
970 return diagnosticsGroupName;
971 }
972
973
974
975
976 private String diagnosticsSubjectIdOrIdentifier;
977
978
979
980
981
982 public String getDiagnosticsSubjectIdOrIdentifier() {
983 return diagnosticsSubjectIdOrIdentifier;
984 }
985
986
987
988
989 private Boolean diagnosticsMembershipsAllSelect;
990
991
992
993
994
995 public boolean isDiagnosticsMembershipsAllSelect() {
996 if (this.diagnosticsMembershipsAllSelect != null) {
997 return this.diagnosticsMembershipsAllSelect;
998 }
999 return false;
1000 }
1001
1002
1003
1004
1005 private Boolean onlyProvisionPolicyGroups;
1006
1007
1008
1009
1010
1011 public boolean isOnlyProvisionPolicyGroups() {
1012 if (this.onlyProvisionPolicyGroups != null) {
1013 return this.onlyProvisionPolicyGroups;
1014 }
1015 return false;
1016 }
1017
1018
1019
1020
1021 private Boolean allowPolicyGroupOverride;
1022
1023
1024
1025
1026
1027 public boolean isAllowPolicyGroupOverride() {
1028 if (this.allowPolicyGroupOverride != null) {
1029 return this.allowPolicyGroupOverride;
1030 }
1031 return true;
1032 }
1033
1034
1035
1036
1037 private String provisionableRegex;
1038
1039
1040
1041
1042
1043 public String getProvisionableRegex() {
1044 return this.provisionableRegex;
1045 }
1046
1047
1048
1049
1050 private Boolean allowProvisionableRegexOverride;
1051
1052
1053
1054
1055
1056 public boolean isAllowProvisionableRegexOverride() {
1057 if (this.allowProvisionableRegexOverride != null) {
1058 return this.allowProvisionableRegexOverride;
1059 }
1060 return true;
1061 }
1062
1063 private boolean runLogicInIncrementalDaemon = true;
1064
1065 private boolean runLogicInFullDaemon = true;
1066
1067 private boolean logCompareCalculations = false;
1068
1069
1070
1071
1072 public boolean isLogCompareCalculations() {
1073 return logCompareCalculations;
1074 }
1075
1076
1077 public void setLogCompareCalculations(boolean logCompareCalculations) {
1078 this.logCompareCalculations = logCompareCalculations;
1079 }
1080
1081 public boolean isRunLogicInIncrementalDaemon() {
1082 return runLogicInIncrementalDaemon;
1083 }
1084
1085
1086 public void setRunLogicInIncrementalDaemon(boolean runLogicInIncrementalDaemon) {
1087 this.runLogicInIncrementalDaemon = runLogicInIncrementalDaemon;
1088 }
1089
1090
1091 public boolean isRunLogicInFullDaemon() {
1092 return runLogicInFullDaemon;
1093 }
1094
1095
1096 public void setRunLogicInFullDaemon(boolean runLogicInFullDaemon) {
1097 this.runLogicInFullDaemon = runLogicInFullDaemon;
1098 }
1099
1100 private boolean readOnly;
1101
1102
1103 public boolean isReadOnly() {
1104 return readOnly;
1105 }
1106
1107
1108 private boolean recalculateAllOperations;
1109
1110
1111
1112
1113 private Map<String, GrouperProvisioningConfigurationAttribute> targetGroupAttributeNameToConfig = new LinkedHashMap<String, GrouperProvisioningConfigurationAttribute>();
1114
1115
1116
1117
1118 private Map<String, GrouperProvisioningObjectMetadataItem> metadataNameToMetadataItem = new TreeMap<String, GrouperProvisioningObjectMetadataItem>();
1119
1120
1121
1122
1123
1124 public Map<String, GrouperProvisioningObjectMetadataItem> getMetadataNameToMetadataItem() {
1125 return metadataNameToMetadataItem;
1126 }
1127
1128
1129
1130
1131
1132 public void setMetadataNameToMetadataItem(
1133 Map<String, GrouperProvisioningObjectMetadataItem> metadataNameToMetadataItem) {
1134 this.metadataNameToMetadataItem = metadataNameToMetadataItem;
1135 }
1136
1137
1138
1139
1140
1141 public Map<String, GrouperProvisioningConfigurationAttribute> getTargetGroupAttributeNameToConfig() {
1142 return targetGroupAttributeNameToConfig;
1143 }
1144
1145
1146
1147
1148 private String membershipMatchingIdExpression;
1149
1150 public String getMembershipMatchingIdExpression() {
1151 return membershipMatchingIdExpression;
1152 }
1153
1154
1155
1156 public void setMembershipMatchingIdExpression(String membershipMatchingIdExpression) {
1157 this.membershipMatchingIdExpression = membershipMatchingIdExpression;
1158 }
1159
1160
1161 private boolean unresolvableSubjectsInsert = false;
1162
1163 public boolean isUnresolvableSubjectsInsert() {
1164 return unresolvableSubjectsInsert;
1165 }
1166
1167
1168 public void setUnresolvableSubjectsInsert(boolean unresolvableSubjectsInsert) {
1169 this.unresolvableSubjectsInsert = unresolvableSubjectsInsert;
1170 }
1171
1172 private boolean unresolvableSubjectsRemove = false;
1173
1174 public boolean isUnresolvableSubjectsRemove() {
1175 return unresolvableSubjectsRemove;
1176 }
1177
1178 public void setUnresolvableSubjectsRemove(boolean unresolvableSubjectsRemove) {
1179 this.unresolvableSubjectsRemove = unresolvableSubjectsRemove;
1180 }
1181
1182 private boolean removeAccentedChars;
1183
1184 public boolean isRemoveAccentedChars() {
1185 return removeAccentedChars;
1186 }
1187
1188 public void setRemoveAccentedChars(boolean removeAccentedChars) {
1189 this.removeAccentedChars = removeAccentedChars;
1190 }
1191
1192 private boolean logCommandsAlways = false;
1193
1194
1195
1196
1197 public boolean isLogCommandsAlways() {
1198 return logCommandsAlways;
1199 }
1200
1201
1202 public void setLogCommandsAlways(boolean logCommandsAlways) {
1203 this.logCommandsAlways = logCommandsAlways;
1204 }
1205
1206 private int logAllObjectsVerboseCount;
1207
1208 public int getLogAllObjectsVerboseCount() {
1209 return logAllObjectsVerboseCount;
1210 }
1211
1212
1213 public void setLogAllObjectsVerboseCount(int logAllObjectsVerboseCount) {
1214 this.logAllObjectsVerboseCount = logAllObjectsVerboseCount;
1215 }
1216
1217 private int logMaxErrorsPerType;
1218
1219 public int getLogMaxErrorsPerType() {
1220 return logMaxErrorsPerType;
1221 }
1222
1223 public void setLogMaxErrorsPerType(int logMaxErrorsPerType) {
1224 this.logMaxErrorsPerType = logMaxErrorsPerType;
1225 }
1226
1227 public boolean isLogCommandsOnError() {
1228 return logCommandsOnError;
1229 }
1230
1231
1232 public void setLogCommandsOnError(boolean logCommandsOnError) {
1233 this.logCommandsOnError = logCommandsOnError;
1234 }
1235
1236 private boolean logCommandsOnError = false;
1237
1238 private boolean logAllObjectsVerbose = false;
1239
1240 private boolean logAllObjectsVerboseToLogFile = false;
1241
1242 private boolean logAllObjectsVerboseToDaemonDbLog = false;
1243
1244
1245
1246 public boolean isLogAllObjectsVerboseToLogFile() {
1247 return logAllObjectsVerboseToLogFile;
1248 }
1249
1250 public void setLogAllObjectsVerboseToLogFile(boolean logAllObjectsVerboseToLogFile) {
1251 this.logAllObjectsVerboseToLogFile = logAllObjectsVerboseToLogFile;
1252 }
1253
1254 public boolean isLogAllObjectsVerboseToDaemonDbLog() {
1255 return logAllObjectsVerboseToDaemonDbLog;
1256 }
1257
1258 public void setLogAllObjectsVerboseToDaemonDbLog(boolean logAllObjectsVerboseToDaemonDbLog) {
1259 this.logAllObjectsVerboseToDaemonDbLog = logAllObjectsVerboseToDaemonDbLog;
1260 }
1261
1262 public boolean isLogAllObjectsVerbose() {
1263 return logAllObjectsVerbose;
1264 }
1265
1266
1267 public void setLogAllObjectsVerbose(boolean logAllObjectsVerbose) {
1268 this.logAllObjectsVerbose = logAllObjectsVerbose;
1269 }
1270
1271 private boolean debugLog = false;
1272
1273
1274
1275
1276 public boolean isDebugLog() {
1277 return debugLog;
1278 }
1279
1280
1281
1282
1283 public void setDebugLog(boolean debugLog) {
1284 this.debugLog = debugLog;
1285 }
1286
1287
1288
1289
1290 private GrouperProvisioner grouperProvisioner = null;
1291
1292
1293
1294
1295
1296 public GrouperProvisioner getGrouperProvisioner() {
1297 return this.grouperProvisioner;
1298 }
1299
1300
1301
1302
1303
1304 public void setGrouperProvisioner(GrouperProvisioner grouperProvisioner1) {
1305 this.grouperProvisioner = grouperProvisioner1;
1306 }
1307
1308 private String configId;
1309
1310 public void setConfigId(String configId) {
1311 this.configId = configId;
1312 }
1313 public String getConfigId() {
1314 return configId;
1315 }
1316
1317
1318
1319
1320 private Map<String, List<String>> grouperProvisioningToTargetTranslation = new HashMap<String, List<String>>();
1321
1322
1323 public Map<String, List<String>> getGrouperProvisioningToTargetTranslation() {
1324 return grouperProvisioningToTargetTranslation;
1325 }
1326
1327
1328
1329
1330
1331
1332 private int scoreConvertToFullSyncThreshold;
1333
1334
1335
1336
1337
1338
1339
1340 public int getScoreConvertToFullSyncThreshold() {
1341 return scoreConvertToFullSyncThreshold;
1342 }
1343
1344
1345
1346
1347
1348
1349
1350 public void setScoreConvertToFullSyncThreshold(int scoreConvertToFullSyncThreshold1) {
1351 this.scoreConvertToFullSyncThreshold = scoreConvertToFullSyncThreshold1;
1352 }
1353
1354
1355
1356
1357
1358
1359 private int membershipsConvertToGroupSyncThreshold;
1360
1361
1362
1363
1364
1365
1366
1367 public int getMembershipsConvertToGroupSyncThreshold() {
1368 return membershipsConvertToGroupSyncThreshold;
1369 }
1370
1371
1372
1373
1374
1375
1376
1377 public void setMembershipsConvertToGroupSyncThreshold(
1378 int membershipsConvertToGroupSyncThreshold) {
1379 this.membershipsConvertToGroupSyncThreshold = membershipsConvertToGroupSyncThreshold;
1380 }
1381
1382
1383
1384
1385
1386
1387
1388 public Boolean retrieveConfigBoolean(String configName, boolean required) {
1389 String configValueString = retrieveConfigString(configName, required);
1390 return GrouperClientUtils.booleanObjectValue(configValueString);
1391 }
1392
1393
1394
1395
1396
1397
1398
1399 public Double retrieveConfigDouble(String configName, boolean required) {
1400 String configValueString = retrieveConfigString(configName, required);
1401 return GrouperClientUtils.doubleObjectValue(configValueString);
1402 }
1403
1404
1405
1406
1407
1408
1409
1410 public Integer retrieveConfigInt(String configName, boolean required) {
1411 String configValueString = retrieveConfigString(configName, required);
1412 return GrouperClientUtils.intObjectValue(configValueString, true);
1413 }
1414
1415
1416
1417
1418
1419
1420
1421 public String retrieveConfigString(String configSuffix, boolean required) {
1422
1423 String value = GrouperLoaderConfig.retrieveConfig().propertyValueString("provisioner." + this.getConfigId() + "." + configSuffix);
1424 if (!StringUtils.isBlank(value)) {
1425 return value;
1426 }
1427 value = GrouperLoaderConfig.retrieveConfig().propertyValueString("provisionerDefault." + configSuffix);
1428 if (!StringUtils.isBlank(value)) {
1429 return value;
1430 }
1431 if (required) {
1432 throw new RuntimeException("Cant find config for provisioning: provisioner." + this.getConfigId() + "." + configSuffix);
1433 }
1434 return null;
1435
1436 }
1437
1438 private Map<String, Object> debugMap = null;
1439
1440 public void preConfigure() {
1441
1442 if (StringUtils.isBlank(this.grouperProvisioner.getConfigId())) {
1443 throw new RuntimeException("Why is config id blank?");
1444 }
1445
1446
1447 if (this.getGrouperProvisioner().retrieveGrouperProvisioningBehavior().getGrouperProvisioningType() == null) {
1448 throw new RuntimeException("Why is provisioning type blank?");
1449 }
1450
1451 this.setConfigId(this.grouperProvisioner.getConfigId());
1452
1453 if (this.grouperProvisioner.getGcGrouperSync() == null) {
1454 this.grouperProvisioner.setGcGrouperSync(GcGrouperSyncDao.retrieveOrCreateByProvisionerName(null, this.getConfigId()));
1455 }
1456
1457 if (StringUtils.isBlank(this.grouperProvisioner.getGcGrouperSync().getSyncEngine())) {
1458 this.grouperProvisioner.getGcGrouperSync().setSyncEngine(GcGrouperSync.PROVISIONING);
1459 this.grouperProvisioner.getGcGrouperSync().getGcGrouperSyncDao().store();
1460 }
1461
1462 if (!GrouperClientUtils.equals(GcGrouperSync.PROVISIONING, this.grouperProvisioner.getGcGrouperSync().getSyncEngine())) {
1463 throw new RuntimeException("Why is sync engine not 'provisioning'? " + this.getConfigId() + ", " + this.grouperProvisioner.getGcGrouperSync().getSyncEngine());
1464 }
1465
1466 GcGrouperSyncJob gcGrouperSyncJob = this.grouperProvisioner.getGcGrouperSyncJob();
1467 if (gcGrouperSyncJob == null) {
1468 gcGrouperSyncJob = this.grouperProvisioner.getGcGrouperSync().getGcGrouperSyncJobDao()
1469 .jobRetrieveOrCreateBySyncType(this.getGrouperProvisioner().retrieveGrouperProvisioningBehavior().getGrouperProvisioningType().name());
1470 this.grouperProvisioner.setGcGrouperSyncJob(gcGrouperSyncJob);
1471 }
1472 if (GrouperLoaderConfig.retrieveConfig().propertyValueBoolean("provisioner." + this.getConfigId() + ".debugConfig", false)) {
1473
1474 debugMap = this.grouperProvisioner.getDebugMap();
1475 } else {
1476 debugMap = new LinkedHashMap<String, Object>();
1477 }
1478 }
1479
1480
1481
1482
1483 private boolean hasTargetGroupLink = false;
1484
1485
1486
1487
1488 private boolean hasTargetEntityLink = false;
1489
1490
1491
1492
1493 private Set<String> subjectSourcesToProvision = null;
1494
1495
1496
1497
1498
1499 private List<GrouperProvisioningConfigurationAttribute> entitySearchAttributes = null;
1500
1501
1502
1503
1504 private List<GrouperProvisioningConfigurationAttribute> groupSearchAttributes = null;
1505
1506
1507
1508
1509 private Set<String> groupSelectAttributes = null;
1510
1511
1512
1513
1514
1515 public Set<String> getGroupSelectAttributes() {
1516 return groupSelectAttributes;
1517 }
1518
1519
1520
1521
1522
1523 public void setGroupSelectAttributes(Set<String> groupSelectAttributes) {
1524 this.groupSelectAttributes = groupSelectAttributes;
1525 }
1526
1527
1528
1529
1530
1531 public Set<String> getEntitySelectAttributes() {
1532 return entitySelectAttributes;
1533 }
1534
1535
1536
1537
1538
1539 public void setEntitySelectAttributes(Set<String> entitySelectAttributes) {
1540 this.entitySelectAttributes = entitySelectAttributes;
1541 }
1542
1543
1544
1545
1546 private Set<String> entitySelectAttributes = null;
1547
1548
1549
1550
1551 private List<GrouperProvisioningConfigurationAttribute> entityMatchingAttributes = null;
1552
1553 public List<GrouperProvisioningConfigurationAttribute> getEntityMatchingAttributes() {
1554 return entityMatchingAttributes;
1555 }
1556
1557
1558
1559
1560 private List<GrouperProvisioningConfigurationAttribute> groupMatchingAttributes = null;
1561
1562 public List<GrouperProvisioningConfigurationAttribute> getGroupMatchingAttributes() {
1563 return groupMatchingAttributes;
1564 }
1565
1566
1567
1568
1569 private Set<String> entityAttributesMultivalued = null;
1570
1571
1572
1573
1574 private Set<String> groupAttributesMultivalued = null;
1575
1576
1577
1578
1579 private int refreshSubjectLinkIfLessThanAmount;
1580
1581
1582
1583
1584 private int refreshGroupLinkIfLessThanAmount;
1585
1586
1587
1588
1589 private int refreshEntityLinkIfLessThanAmount;
1590
1591
1592
1593
1594
1595 public int getRefreshGroupLinkIfLessThanAmount() {
1596 return refreshGroupLinkIfLessThanAmount;
1597 }
1598
1599
1600
1601
1602
1603
1604
1605 public void setRefreshGroupLinkIfLessThanAmount(int refreshGroupLinkIfLessThanAmount) {
1606 this.refreshGroupLinkIfLessThanAmount = refreshGroupLinkIfLessThanAmount;
1607 }
1608
1609
1610
1611
1612
1613
1614
1615 public int getRefreshEntityLinkIfLessThanAmount() {
1616 return refreshEntityLinkIfLessThanAmount;
1617 }
1618
1619
1620
1621
1622
1623
1624
1625 public void setRefreshEntityLinkIfLessThanAmount(int refreshEntityLinkIfLessThanAmount) {
1626 this.refreshEntityLinkIfLessThanAmount = refreshEntityLinkIfLessThanAmount;
1627 }
1628
1629
1630
1631
1632
1633
1634
1635 public int getRefreshSubjectLinkIfLessThanAmount() {
1636 return refreshSubjectLinkIfLessThanAmount;
1637 }
1638
1639
1640
1641
1642
1643 public void setRefreshSubjectLinkIfLessThanAmount(
1644 int refreshSubjectLinkIfLessThanAmount) {
1645 this.refreshSubjectLinkIfLessThanAmount = refreshSubjectLinkIfLessThanAmount;
1646 }
1647
1648
1649
1650
1651 private boolean insertEntities = false;
1652
1653
1654
1655
1656 private boolean replaceMemberships = false;
1657
1658
1659
1660
1661
1662 public boolean isReplaceMemberships() {
1663 return replaceMemberships;
1664 }
1665
1666
1667
1668
1669
1670 public void setReplaceMemberships(boolean replaceMemberships) {
1671 this.replaceMemberships = replaceMemberships;
1672 }
1673
1674
1675
1676
1677
1678 public boolean isInsertMemberships() {
1679 return insertMemberships;
1680 }
1681
1682
1683
1684
1685
1686 public void setInsertMemberships(boolean insertMemberships) {
1687 this.insertMemberships = insertMemberships;
1688 }
1689
1690
1691
1692
1693
1694 public boolean isDeleteMemberships() {
1695 return deleteMemberships;
1696 }
1697
1698
1699
1700
1701
1702 public void setDeleteMemberships(boolean deleteMemberships) {
1703 this.deleteMemberships = deleteMemberships;
1704 }
1705
1706
1707
1708
1709 private boolean updateGroups = true;
1710
1711
1712
1713
1714 private boolean updateEntities = false;
1715
1716
1717
1718
1719
1720 public boolean isUpdateGroups() {
1721 return updateGroups;
1722 }
1723
1724
1725
1726
1727
1728 public void setUpdateGroups(boolean updateGroups) {
1729 this.updateGroups = updateGroups;
1730 }
1731
1732
1733
1734
1735
1736 public boolean isUpdateEntities() {
1737 return updateEntities;
1738 }
1739
1740
1741
1742
1743
1744 public void setUpdateEntities(boolean updateEntities) {
1745 this.updateEntities = updateEntities;
1746 }
1747
1748
1749
1750
1751 private boolean deleteGroups = true;
1752
1753
1754
1755
1756
1757 public boolean isDeleteGroups() {
1758 return deleteGroups;
1759 }
1760
1761
1762
1763
1764
1765 public void setDeleteGroups(boolean deleteGroups) {
1766 this.deleteGroups = deleteGroups;
1767 }
1768
1769
1770
1771
1772 private boolean deleteEntitiesIfGrouperDeleted = false;
1773
1774
1775
1776
1777 private boolean deleteEntitiesIfNotExistInGrouper = false;
1778
1779
1780
1781
1782 private boolean deleteEntities = false;
1783
1784
1785
1786
1787 private boolean selectEntities = true;
1788
1789
1790
1791
1792 private boolean selectAllEntities = true;
1793
1794
1795
1796
1797 private boolean selectAllGroups = true;
1798
1799
1800 public boolean isSelectAllGroups() {
1801 return selectAllGroups;
1802 }
1803
1804 public void setSelectAllGroups(boolean selectAllGroups) {
1805 this.selectAllGroups = selectAllGroups;
1806 }
1807
1808
1809
1810
1811
1812 public boolean isDeleteEntitiesIfGrouperDeleted() {
1813 return deleteEntitiesIfGrouperDeleted;
1814 }
1815
1816
1817
1818
1819
1820 public void setDeleteEntitiesIfGrouperDeleted(boolean deleteEntitiesIfGrouperDeleted) {
1821 this.deleteEntitiesIfGrouperDeleted = deleteEntitiesIfGrouperDeleted;
1822 }
1823
1824
1825
1826
1827
1828 public boolean isDeleteEntitiesIfNotExistInGrouper() {
1829 return deleteEntitiesIfNotExistInGrouper;
1830 }
1831
1832
1833
1834
1835
1836 public void setDeleteEntitiesIfNotExistInGrouper(
1837 boolean deleteEntitiesIfNotExistInGrouper) {
1838 this.deleteEntitiesIfNotExistInGrouper = deleteEntitiesIfNotExistInGrouper;
1839 }
1840
1841
1842
1843
1844
1845 public boolean isDeleteMembershipsIfGrouperDeleted() {
1846 return deleteMembershipsIfGrouperDeleted;
1847 }
1848
1849
1850
1851
1852
1853 public void setDeleteMembershipsIfGrouperDeleted(
1854 boolean deleteMembershipsIfGrouperDeleted) {
1855 this.deleteMembershipsIfGrouperDeleted = deleteMembershipsIfGrouperDeleted;
1856 }
1857
1858
1859
1860
1861
1862 public boolean isDeleteMembershipsIfNotExistInGrouper() {
1863 return deleteMembershipsIfNotExistInGrouper;
1864 }
1865
1866
1867
1868
1869
1870 public void setDeleteMembershipsIfNotExistInGrouper(
1871 boolean deleteMembershipsIfNotExistInGrouper) {
1872 this.deleteMembershipsIfNotExistInGrouper = deleteMembershipsIfNotExistInGrouper;
1873 }
1874
1875
1876 public boolean isDeleteValueIfManagedByGrouper() {
1877 return deleteValueIfManagedByGrouper;
1878 }
1879
1880 public void setDeleteValueIfManagedByGrouper(boolean deleteValueIfManagedByGrouper) {
1881 this.deleteValueIfManagedByGrouper = deleteValueIfManagedByGrouper;
1882 }
1883
1884 public boolean isDeleteMembershipsOnlyInTrackedGroups() {
1885 return deleteMembershipsOnlyInTrackedGroups;
1886 }
1887
1888
1889 public void setDeleteMembershipsOnlyInTrackedGroups(
1890 boolean deleteMembershipsOnlyInTrackedGroups) {
1891 this.deleteMembershipsOnlyInTrackedGroups = deleteMembershipsOnlyInTrackedGroups;
1892 }
1893
1894
1895
1896
1897
1898 public boolean isDeleteEntities() {
1899 return deleteEntities;
1900 }
1901
1902
1903
1904
1905
1906 public void setDeleteEntities(boolean deleteEntities) {
1907 this.deleteEntities = deleteEntities;
1908 }
1909
1910
1911
1912
1913
1914 public boolean isSelectEntities() {
1915 return selectEntities;
1916 }
1917
1918
1919
1920
1921
1922 public void setSelectEntities(boolean selectEntities) {
1923 this.selectEntities = selectEntities;
1924 }
1925
1926
1927
1928
1929
1930 public boolean isSelectAllEntities() {
1931 return selectAllEntities;
1932 }
1933
1934
1935
1936
1937
1938 public void setSelectAllEntities(boolean selectAllEntities) {
1939 this.selectAllEntities = selectAllEntities;
1940 }
1941
1942
1943
1944
1945
1946 public boolean isSelectMemberships() {
1947 return selectMemberships;
1948 }
1949
1950
1951
1952
1953
1954 public void setSelectMemberships(boolean selectMemberships) {
1955 this.selectMemberships = selectMemberships;
1956 }
1957
1958
1959
1960
1961 private boolean insertMemberships = true;
1962
1963
1964
1965
1966
1967 private boolean deleteMemberships = true;
1968
1969
1970
1971
1972 private boolean deleteMembershipsIfGrouperCreated = true;
1973
1974
1975
1976
1977 private boolean deleteMembershipsIfGrouperDeleted = false;
1978
1979
1980
1981
1982 private boolean deleteMembershipsIfNotExistInGrouper = false;
1983
1984
1985
1986
1987 private boolean deleteValueIfManagedByGrouper = false;
1988
1989
1990
1991
1992 private boolean deleteMembershipsForUnprovisionableUsers = false;
1993
1994
1995
1996
1997 private boolean deleteMembershipsOnlyInTrackedGroups = true;
1998
1999
2000
2001
2002 private boolean selectMemberships = true;
2003
2004
2005
2006
2007
2008 private boolean insertGroups = true;
2009
2010
2011
2012
2013 private boolean selectGroups = true;
2014
2015
2016
2017
2018
2019 public boolean isSelectGroups() {
2020 return selectGroups;
2021 }
2022
2023
2024
2025
2026
2027 public void setSelectGroups(boolean selectGroups) {
2028 this.selectGroups = selectGroups;
2029 }
2030
2031 private String entitySearchAllFilter;
2032
2033
2034
2035
2036
2037 public String getEntitySearchAllFilter() {
2038 return entitySearchAllFilter;
2039 }
2040
2041
2042
2043
2044
2045 public void setEntitySearchAllFilter(String userSearchAllFilter) {
2046 this.entitySearchAllFilter = userSearchAllFilter;
2047 }
2048
2049 protected Class<? extends GrouperProvisioningConfigurationAttribute> grouperProvisioningConfigurationAttributeClass() {
2050 return GrouperProvisioningConfigurationAttribute.class;
2051 }
2052
2053
2054 @Override
2055 public String toString() {
2056
2057 StringBuilder result = new StringBuilder();
2058
2059 GrouperProvisioningConfiguration provisionerConfiguration = this.grouperProvisioner.retrieveGrouperProvisioningConfiguration();
2060 Set<String> fieldNames = GrouperUtil.fieldNames(provisionerConfiguration.getClass(),
2061 GrouperProvisioningConfiguration.class, null, true, false, false);
2062
2063
2064 fieldNames.remove("configId");
2065 fieldNames.remove("debugLog");
2066 fieldNames.remove("debugMap");
2067 fieldNames.remove("grouperProvisioner");
2068 fieldNames.remove("targetEntityAttributeNameToConfig");
2069 fieldNames.remove("targetEntityFieldNameToConfig");
2070 fieldNames.remove("targetGroupAttributeNameToConfig");
2071 fieldNames.remove("targetGroupFieldNameToConfig");
2072 fieldNames.remove("targetMembershipAttributeNameToConfig");
2073 fieldNames.remove("targetMembershipFieldNameToConfig");
2074 fieldNames.remove("grouperProvisioningToTargetTranslation");
2075 fieldNames.remove("metadataNameToMetadataItem");
2076 fieldNames.remove("entityMatchingAttributes");
2077 fieldNames.remove("groupMatchingAttributes");
2078 fieldNames.remove("entitySearchAttributes");
2079 fieldNames.remove("groupSearchAttributes");
2080 fieldNames.remove("searchedForEmailCache");
2081 fieldNames.remove("searchedForIdCache");
2082
2083 fieldNames = new TreeSet<String>(fieldNames);
2084 boolean firstField = true;
2085 for (String fieldName : fieldNames) {
2086
2087 Object value = GrouperUtil.propertyValue(provisionerConfiguration, fieldName);
2088 if (!GrouperUtil.isBlank(value)) {
2089
2090 if ((value instanceof Collection) && ((Collection)value).size() == 0) {
2091 continue;
2092 }
2093 if ((value instanceof Map) && ((Map)value).size() == 0) {
2094 continue;
2095 }
2096 if ((value.getClass().isArray()) && Array.getLength(value) == 0) {
2097 continue;
2098 }
2099 if (!firstField) {
2100 result.append(", ");
2101 }
2102 firstField = false;
2103 result.append(fieldName).append(" = '").append(GrouperUtil.toStringForLog(value, false)).append("'");
2104 }
2105 }
2106 if (GrouperUtil.length(this.groupMatchingAttributes) > 0) {
2107 result.append(", groupMatchingAttributes: ");
2108 boolean first = true;
2109 for (GrouperProvisioningConfigurationAttribute grouperProvisioningConfigurationAttribute : this.groupMatchingAttributes) {
2110 if (!first) {
2111 result.append(", ");
2112 }
2113 first = false;
2114 result.append(grouperProvisioningConfigurationAttribute.getName());
2115 }
2116 }
2117 if (GrouperUtil.length(this.groupSearchAttributes) > 0) {
2118 result.append(", groupSearchAttributes: ");
2119 boolean first = true;
2120 for (GrouperProvisioningConfigurationAttribute grouperProvisioningConfigurationAttribute : this.groupSearchAttributes) {
2121 if (!first) {
2122 result.append(", ");
2123 }
2124 first = false;
2125 result.append(grouperProvisioningConfigurationAttribute.getName());
2126 }
2127 }
2128 if (GrouperUtil.length(this.entityMatchingAttributes) > 0) {
2129 result.append(", entityMatchingAttributes: ");
2130 boolean first = true;
2131 for (GrouperProvisioningConfigurationAttribute grouperProvisioningConfigurationAttribute : this.entityMatchingAttributes) {
2132 if (!first) {
2133 result.append(", ");
2134 }
2135 first = false;
2136 result.append(grouperProvisioningConfigurationAttribute.getName());
2137 }
2138 }
2139 if (GrouperUtil.length(this.entitySearchAttributes) > 0) {
2140 result.append(", entitySearchAttributes: ");
2141 boolean first = true;
2142 for (GrouperProvisioningConfigurationAttribute grouperProvisioningConfigurationAttribute : this.entitySearchAttributes) {
2143 if (!first) {
2144 result.append(", ");
2145 }
2146 first = false;
2147 result.append(grouperProvisioningConfigurationAttribute.getName());
2148 }
2149 }
2150 for (String key : new TreeSet<String>(this.metadataNameToMetadataItem.keySet())) {
2151 if (result.charAt(result.length()-1) != '\n') {
2152 result.append("\n");
2153 }
2154 GrouperProvisioningObjectMetadataItem grouperProvisioningObjectMetadataItem = this.metadataNameToMetadataItem.get(key);
2155 result.append(" - metadata item: " + key + ": " + grouperProvisioningObjectMetadataItem.toString());
2156 }
2157 for (String key : new TreeSet<String>(this.grouperProvisioningToTargetTranslation.keySet())) {
2158 List<String> translations = this.grouperProvisioningToTargetTranslation.get(key);
2159 for (int i=0;i<translations.size();i++) {
2160 if (result.charAt(result.length()-1) != '\n') {
2161 result.append("\n");
2162 }
2163 result.append(" - grouperProvisioningToTargetTranslation").append(key).append(".").append(i).append(".script = '").append(translations.get(i)).append("'");
2164 }
2165 }
2166 for (String key : new TreeSet<String>(this.targetGroupAttributeNameToConfig.keySet())) {
2167 if (result.charAt(result.length()-1) != '\n') {
2168 result.append("\n");
2169 }
2170 GrouperProvisioningConfigurationAttribute grouperProvisioningConfigurationAttribute = this.targetGroupAttributeNameToConfig.get(key);
2171 result.append(" - target group attribute config: " + key + ": " + grouperProvisioningConfigurationAttribute.toString());
2172 }
2173 for (String key : new TreeSet<String>(this.targetEntityAttributeNameToConfig.keySet())) {
2174 if (result.charAt(result.length()-1) != '\n') {
2175 result.append("\n");
2176 }
2177 GrouperProvisioningConfigurationAttribute grouperProvisioningConfigurationAttribute = this.targetEntityAttributeNameToConfig.get(key);
2178 result.append(" - target entity attribute config: " + key + ": " + grouperProvisioningConfigurationAttribute.toString());
2179 }
2180 for (String key : new TreeSet<String>(this.targetMembershipAttributeNameToConfig.keySet())) {
2181 if (result.charAt(result.length()-1) != '\n') {
2182 result.append("\n");
2183 }
2184 GrouperProvisioningConfigurationAttribute grouperProvisioningConfigurationAttribute = this.targetMembershipAttributeNameToConfig.get(key);
2185 result.append(" - target membership attribute config: " + key + ": " + grouperProvisioningConfigurationAttribute.toString());
2186 }
2187
2188 return result.toString();
2189 }
2190
2191
2192
2193
2194 private String groupSearchFilter = null;
2195
2196
2197
2198
2199
2200
2201
2202 public String getGroupSearchFilter() {
2203 return groupSearchFilter;
2204 }
2205
2206
2207
2208
2209
2210
2211
2212 public void setGroupSearchFilter(String groupSearchFilter) {
2213 this.groupSearchFilter = groupSearchFilter;
2214 }
2215
2216 private String groupSearchAllFilter;
2217
2218
2219
2220
2221
2222 public String getGroupSearchAllFilter() {
2223 return groupSearchAllFilter;
2224 }
2225
2226
2227
2228
2229
2230 public void setGroupSearchAllFilter(String groupSearchAllFilter) {
2231 this.groupSearchAllFilter = groupSearchAllFilter;
2232 }
2233
2234
2235
2236
2237 private boolean deleteEntitiesIfGrouperCreated = false;
2238
2239
2240
2241
2242 private boolean deleteGroupsIfGrouperCreated = true;
2243
2244 private boolean deleteGroupsIfUnmarkedProvisionable = true;
2245
2246 private boolean deleteMembershipsIfGroupUnmarkedProvisionable = true;
2247
2248
2249
2250
2251
2252 public boolean isDeleteEntitiesIfGrouperCreated() {
2253 return deleteEntitiesIfGrouperCreated;
2254 }
2255
2256
2257
2258
2259
2260 public void setDeleteEntitiesIfGrouperCreated(boolean deleteEntitiesIfGrouperCreated) {
2261 this.deleteEntitiesIfGrouperCreated = deleteEntitiesIfGrouperCreated;
2262 }
2263
2264
2265
2266
2267
2268 public boolean isDeleteGroupsIfGrouperCreated() {
2269 return deleteGroupsIfGrouperCreated;
2270 }
2271
2272
2273 public void setDeleteGroupsIfGrouperCreated(boolean deleteGroupsIfGrouperCreated) {
2274 this.deleteGroupsIfGrouperCreated = deleteGroupsIfGrouperCreated;
2275 }
2276
2277
2278 public boolean isDeleteGroupsIfUnmarkedProvisionable() {
2279 return deleteGroupsIfUnmarkedProvisionable;
2280 }
2281
2282 public void setDeleteGroupsIfUnmarkedProvisionable(
2283 boolean deleteGroupsIfUnmarkedProvisionable) {
2284 this.deleteGroupsIfUnmarkedProvisionable = deleteGroupsIfUnmarkedProvisionable;
2285 }
2286
2287 public boolean isDeleteMembershipsIfGroupUnmarkedProvisionable() {
2288 return deleteMembershipsIfGroupUnmarkedProvisionable;
2289 }
2290
2291 public void setDeleteMembershipsIfGroupUnmarkedProvisionable(
2292 boolean deleteMembershipsIfGroupUnmarkedProvisionable) {
2293 this.deleteMembershipsIfGroupUnmarkedProvisionable = deleteMembershipsIfGroupUnmarkedProvisionable;
2294 }
2295
2296 public boolean isDeleteMembershipsIfGrouperCreated() {
2297 return deleteMembershipsIfGrouperCreated;
2298 }
2299
2300
2301 public void setDeleteMembershipsIfGrouperCreated(
2302 boolean deleteMembershipsIfGrouperCreated) {
2303 this.deleteMembershipsIfGrouperCreated = deleteMembershipsIfGrouperCreated;
2304 }
2305
2306
2307
2308
2309
2310 private boolean deleteGroupsIfNotExistInGrouper = false;
2311
2312
2313
2314
2315
2316 private boolean deleteGroupsIfGrouperDeleted = false;
2317
2318
2319
2320
2321 private GrouperProvisioningMembershipFieldType grouperProvisioningMembershipFieldType = null;
2322
2323
2324
2325
2326 private String attributeNameForMemberships;
2327
2328
2329
2330
2331
2332 public String getAttributeNameForMemberships() {
2333 return attributeNameForMemberships;
2334 }
2335
2336
2337
2338
2339
2340 public void setAttributeNameForMemberships(String attributeNameForMemberships) {
2341 this.attributeNameForMemberships = attributeNameForMemberships;
2342 }
2343
2344
2345
2346
2347 public abstract void configureSpecificSettings();
2348
2349 private GrouperProvisioningBehaviorMembershipType grouperProvisioningBehaviorMembershipType;
2350
2351
2352
2353
2354 private int numberOfMetadata;
2355
2356 private String groupMembershipAttributeName;
2357
2358 public String getGroupMembershipAttributeName() {
2359 return groupMembershipAttributeName;
2360 }
2361
2362 public String getGroupMembershipAttributeValue() {
2363 return groupMembershipAttributeValue;
2364 }
2365
2366 private String groupMembershipAttributeValue;
2367
2368
2369
2370
2371 private String entityMembershipAttributeName;
2372
2373 public String getEntityMembershipAttributeName() {
2374 return entityMembershipAttributeName;
2375 }
2376
2377 public String getEntityMembershipAttributeValue() {
2378 return entityMembershipAttributeValue;
2379 }
2380
2381 private String entityMembershipAttributeValue;
2382
2383 private boolean hasGroupAttributes;
2384
2385 private boolean resolveGroupAttributesWithSql;
2386
2387 private String groupAttributesSqlExternalSystem;
2388
2389 private String groupAttributesTableViewName;
2390
2391 private String groupAttributesColumnNames;
2392
2393 private String groupAttributesTableStructure;
2394
2395 private String groupAttributesAttributeNameColumnName;
2396
2397 private String groupAttributesAttributeValueColumnName;
2398
2399 private String groupAttributesGroupMatchingColumn;
2400
2401 private String groupAttributesLastUpdatedColumn;
2402
2403 private String groupAttributesLastUpdatedType;
2404
2405 private boolean groupAttributesRecalcMembershipsOnIncremental;
2406
2407 private boolean groupAttributesSelectAllSqlOnFull;
2408
2409 private int sleepBeforeSelectAfterInsertMillis;
2410
2411
2412 public int getSleepBeforeSelectAfterInsertMillis() {
2413 return sleepBeforeSelectAfterInsertMillis;
2414 }
2415
2416
2417 public void setSleepBeforeSelectAfterInsertMillis(
2418 int sleepBeforeSelectAfterInsertMillis) {
2419 this.sleepBeforeSelectAfterInsertMillis = sleepBeforeSelectAfterInsertMillis;
2420 }
2421
2422
2423
2424
2425
2426 public int getNumberOfMetadata() {
2427 return numberOfMetadata;
2428 }
2429
2430
2431
2432
2433
2434 public void setNumberOfMetadata(int numberOfMetadata) {
2435 this.numberOfMetadata = numberOfMetadata;
2436 }
2437
2438 public GrouperProvisioningBehaviorMembershipType getGrouperProvisioningBehaviorMembershipType() {
2439 return grouperProvisioningBehaviorMembershipType;
2440 }
2441
2442
2443 public void setGrouperProvisioningBehaviorMembershipType(
2444 GrouperProvisioningBehaviorMembershipType grouperProvisioningBehaviorMembershipType) {
2445 this.grouperProvisioningBehaviorMembershipType = grouperProvisioningBehaviorMembershipType;
2446 }
2447
2448 public void configureProvisionableSettings() {
2449 if (this.getConfigId() == null) {
2450 this.setConfigId(this.grouperProvisioner.getConfigId());
2451 }
2452
2453 this.onlyProvisionPolicyGroups = this.retrieveConfigBoolean("onlyProvisionPolicyGroups", false);
2454
2455 this.allowPolicyGroupOverride = this.retrieveConfigBoolean("allowPolicyGroupOverride", false);
2456
2457 this.allowProvisionableRegexOverride = this.retrieveConfigBoolean("allowProvisionableRegexOverride", false);
2458
2459 this.provisionableRegex = this.retrieveConfigString("provisionableRegex", false);
2460 }
2461
2462 public void configureGenericSettings() {
2463 configureProvisionableSettings();
2464
2465 {
2466 Boolean operateOnGrouperMemberships = this.retrieveConfigBoolean("operateOnGrouperMemberships", false);
2467 if (operateOnGrouperMemberships == null) {
2468 operateOnGrouperMemberships = false;
2469 }
2470
2471 if (operateOnGrouperMemberships) {
2472 String provisioningTypeString = this.retrieveConfigString("provisioningType", true);
2473 this.grouperProvisioningBehaviorMembershipType = GrouperProvisioningBehaviorMembershipType.valueOf(provisioningTypeString);
2474 }
2475
2476 }
2477
2478 this.sleepBeforeSelectAfterInsertMillis = GrouperUtil.intValue(this.retrieveConfigInt("sleepBeforeSelectAfterInsertMillis", false), 0);
2479
2480 this.numberOfMessagesToProcessEachIncremental = GrouperUtil.intValue(this.retrieveConfigInt("numberOfMessagesToProcessEachIncremental", false), 5000);
2481
2482 this.numberOfMetadata = GrouperUtil.intValue(this.retrieveConfigInt("numberOfMetadata", false), 0);
2483
2484 for (int i=0;i<this.numberOfMetadata;i++) {
2485
2486 GrouperProvisioningObjectMetadataItemtem.html#GrouperProvisioningObjectMetadataItem">GrouperProvisioningObjectMetadataItem grouperProvisioningObjectMetadataItem = new GrouperProvisioningObjectMetadataItem();
2487 {
2488 String name = this.retrieveConfigString("metadata."+i+".name", false);
2489 if (!name.startsWith("md_")) {
2490
2491 this.debugMap.put("invalid_metadataName_" + name, true);
2492 continue;
2493 }
2494 grouperProvisioningObjectMetadataItem.setName(name);
2495 if (this.metadataNameToMetadataItem.containsKey(name)) {
2496 throw new RuntimeException("Conflicting metadata names! " + name);
2497 }
2498 this.metadataNameToMetadataItem.put(name, grouperProvisioningObjectMetadataItem);
2499 }
2500
2501 grouperProvisioningObjectMetadataItem.setLabelKey(grouperProvisioningObjectMetadataItem.getName() + "_" + this.getGrouperProvisioner().getConfigId() + "_label");
2502 grouperProvisioningObjectMetadataItem.setDescriptionKey(grouperProvisioningObjectMetadataItem.getName() + "_" + this.getGrouperProvisioner().getConfigId() + "_description");
2503
2504 {
2505 boolean showForFolder = GrouperUtil.booleanValue(this.retrieveConfigBoolean("metadata."+i+".showForFolder", false), false);
2506 grouperProvisioningObjectMetadataItem.setShowForFolder(showForFolder);
2507 }
2508
2509 {
2510 boolean showForGroup = GrouperUtil.booleanValue(this.retrieveConfigBoolean("metadata."+i+".showForGroup", false), false);
2511 grouperProvisioningObjectMetadataItem.setShowForGroup(showForGroup);
2512 }
2513
2514 {
2515 boolean showForMember = GrouperUtil.booleanValue(this.retrieveConfigBoolean("metadata."+i+".showForMember", false), false);
2516 grouperProvisioningObjectMetadataItem.setShowForMember(showForMember);
2517 }
2518
2519 {
2520 boolean showForMembership = GrouperUtil.booleanValue(this.retrieveConfigBoolean("metadata."+i+".showForMembership", false), false);
2521 grouperProvisioningObjectMetadataItem.setShowForMembership(showForMembership);
2522 }
2523
2524 {
2525 boolean canChange = GrouperUtil.booleanValue(this.retrieveConfigBoolean("metadata."+i+".canChange", false), true);
2526 grouperProvisioningObjectMetadataItem.setCanChange(canChange);
2527 }
2528
2529 {
2530 boolean canUpdate = GrouperUtil.booleanValue(this.retrieveConfigBoolean("metadata."+i+".canUpdate", false), true);
2531 grouperProvisioningObjectMetadataItem.setCanUpdate(canUpdate);
2532 }
2533
2534 {
2535 String valueType = this.retrieveConfigString("metadata."+i+".valueType", false);
2536 GrouperProvisioningObjectMetadataItemValueType grouperProvisioningObjectMetadataItemValueType =
2537 StringUtils.isBlank(valueType) ? GrouperProvisioningObjectMetadataItemValueType.STRING
2538 : GrouperProvisioningObjectMetadataItemValueType.valueOfIgnoreCase(valueType, true);
2539 grouperProvisioningObjectMetadataItem.setValueType(grouperProvisioningObjectMetadataItemValueType);
2540
2541 if (grouperProvisioningObjectMetadataItemValueType == GrouperProvisioningObjectMetadataItemValueType.BOOLEAN) {
2542 grouperProvisioningObjectMetadataItem.setFormElementType(GrouperProvisioningObjectMetadataItemFormElementType.RADIOBUTTON);
2543
2544 String trueLabel = GrouperTextContainer.textOrNull("config.defaultTrueLabel");
2545 String falseLabel = GrouperTextContainer.textOrNull("config.defaultFalseLabel");
2546
2547 String defaultValue = this.retrieveConfigString("metadata."+i+".defaultValue", false);
2548
2549 List<MultiKey> keysAndLabels = new ArrayList<MultiKey>();
2550
2551 if (StringUtils.isNotBlank(defaultValue)) {
2552
2553 Boolean booleanObjectValue = GrouperUtil.booleanObjectValue(defaultValue);
2554 if (booleanObjectValue != null) {
2555 String defaultValueStr = booleanObjectValue ? "("+trueLabel+")" : "("+falseLabel+")";
2556 keysAndLabels.add(new MultiKey("", GrouperTextContainer.textOrNull("config.defaultValueLabel")+" " + defaultValueStr ));
2557 }
2558 }
2559
2560 keysAndLabels.add(new MultiKey("true", trueLabel));
2561 keysAndLabels.add(new MultiKey("false", falseLabel));
2562 grouperProvisioningObjectMetadataItem.setKeysAndLabelsForDropdown(keysAndLabels);
2563 } else {
2564 String formElementType = this.retrieveConfigString("metadata."+i+".formElementType", false);
2565 GrouperProvisioningObjectMetadataItemFormElementType grouperProvisioningObjectMetadataItemFormElementType =
2566 StringUtils.isBlank(formElementType) ? GrouperProvisioningObjectMetadataItemFormElementType.TEXT
2567 : GrouperProvisioningObjectMetadataItemFormElementType.valueOfIgnoreCase(formElementType, true);
2568 grouperProvisioningObjectMetadataItem.setFormElementType(grouperProvisioningObjectMetadataItemFormElementType);
2569 }
2570 }
2571
2572 {
2573 String defaultValue = this.retrieveConfigString("metadata."+i+".defaultValue", false);
2574 grouperProvisioningObjectMetadataItem.setDefaultValue(defaultValue);
2575 }
2576
2577 {
2578 String dropdownValues = this.retrieveConfigString("metadata."+i+".dropdownValues", false);
2579 if (!StringUtils.isBlank(dropdownValues)) {
2580 String[] dropdownValuesArray = GrouperUtil.splitTrim(dropdownValues, ",");
2581 List<MultiKey> keysAndLabels = new ArrayList<MultiKey>();
2582 keysAndLabels.add(new MultiKey("", ""));
2583 for (String dropdownValue : dropdownValuesArray) {
2584 dropdownValue = GrouperUtil.replace(dropdownValue, ",", ",");
2585 MultiKey keyAndLabel = new MultiKey(dropdownValue, dropdownValue);
2586 keysAndLabels.add(keyAndLabel);
2587 }
2588 grouperProvisioningObjectMetadataItem.setKeysAndLabelsForDropdown(keysAndLabels);
2589 }
2590 }
2591
2592 {
2593 boolean required = GrouperUtil.booleanValue(this.retrieveConfigBoolean("metadata."+i+".required", false), false);
2594 grouperProvisioningObjectMetadataItem.setRequired(required);
2595 }
2596
2597 {
2598 String groupIdThatCanView = this.retrieveConfigString("metadata."+i+".groupIdThatCanView", false);
2599 grouperProvisioningObjectMetadataItem.setGroupIdThatCanView(groupIdThatCanView);
2600 }
2601 {
2602 String groupIdThatCanUpdate = this.retrieveConfigString("metadata."+i+".groupIdThatCanUpdate", false);
2603 grouperProvisioningObjectMetadataItem.setGroupIdThatCanUpdate(groupIdThatCanUpdate);
2604 }
2605
2606 }
2607
2608 this.groupMembershipAttributeName = this.retrieveConfigString("groupMembershipAttributeName", false);
2609 this.groupMembershipAttributeValue = this.retrieveConfigString("groupMembershipAttributeValue", false);
2610
2611 this.entityMembershipAttributeName = this.retrieveConfigString("entityMembershipAttributeName", false);
2612 this.entityMembershipAttributeValue = this.retrieveConfigString("entityMembershipAttributeValue", false);
2613
2614
2615 for (String objectType: new String[] {"targetGroupAttribute", "targetEntityAttribute", "targetMembershipAttribute"}) {
2616
2617 boolean foundMatchingId = false;
2618 String foundMatchingIdName = null;
2619
2620 boolean foundMembershipAttribute = false;
2621 String foundMembershipAttributeName = null;
2622
2623 for (int i=0; i< 20; i++) {
2624
2625
2626 GrouperProvisioningConfigurationAttribute attributeConfig = GrouperUtil.newInstance(this.grouperProvisioningConfigurationAttributeClass());
2627
2628 attributeConfig.setGrouperProvisioner(grouperProvisioner);
2629 attributeConfig.setConfigIndex(i);
2630
2631 if (StringUtils.equals("targetGroupAttribute", objectType)) {
2632 attributeConfig.setGrouperProvisioningConfigurationAttributeType(GrouperProvisioningConfigurationAttributeType.group);
2633 } else if (StringUtils.equals("targetEntityAttribute", objectType)) {
2634 attributeConfig.setGrouperProvisioningConfigurationAttributeType(GrouperProvisioningConfigurationAttributeType.entity);
2635 } else if (StringUtils.equals("targetMembershipAttribute", objectType)) {
2636 attributeConfig.setGrouperProvisioningConfigurationAttributeType(GrouperProvisioningConfigurationAttributeType.membership);
2637 } else {
2638 throw new RuntimeException("Cant find object type: " + objectType);
2639 }
2640
2641 String name = this.retrieveConfigString(objectType + "."+i+ ".name" , false);
2642 if (StringUtils.isBlank(name)) {
2643 break;
2644 }
2645 attributeConfig.setName(name);
2646
2647 {
2648 boolean showAttributeValidation = GrouperUtil.booleanValue(this.retrieveConfigBoolean(objectType + "."+i+".showAttributeValidation" , false), false);
2649 if (showAttributeValidation) {
2650 {
2651 Integer maxlength = this.retrieveConfigInt(objectType + "."+i+".maxlength", false);
2652 attributeConfig.setMaxlength(maxlength);
2653 }
2654
2655 {
2656 String validExpression = this.retrieveConfigString(objectType + "."+i+".validExpression", false);
2657 attributeConfig.setValidExpression(validExpression);
2658 }
2659
2660 {
2661 boolean required = GrouperUtil.booleanValue(this.retrieveConfigBoolean(objectType + "."+i+".required" , false), false);
2662 attributeConfig.setRequired(required);
2663 }
2664
2665 }
2666 }
2667
2668 {
2669 String translateExpressionType = this.retrieveConfigString(objectType + "."+i+".translateExpressionType" , false);
2670 attributeConfig.setTranslateExpressionType(GrouperProvisioningConfigurationAttributeTranslationType.valueOfIgnoreCase(translateExpressionType, false));
2671 }
2672
2673 {
2674 String translateExpressionType = this.retrieveConfigString(objectType + "."+i+".translateExpressionTypeCreateOnly" , false);
2675 attributeConfig.setTranslateExpressionTypeCreateOnly(GrouperProvisioningConfigurationAttributeTranslationType.valueOfIgnoreCase(translateExpressionType, false));
2676 }
2677
2678 {
2679 String translateExpression = this.retrieveConfigString(objectType + "."+i+".translateExpression" , false);
2680 attributeConfig.setTranslateExpression(translateExpression);
2681 }
2682
2683 {
2684 boolean nullChecksInScript = GrouperUtil.booleanValue(this.retrieveConfigBoolean(objectType + "."+i+".nullChecksInScript" , false), false);
2685 attributeConfig.setCheckForNullsInScript(nullChecksInScript);
2686 }
2687
2688 {
2689 boolean unprovisionableIfNull = GrouperUtil.booleanValue(this.retrieveConfigBoolean(objectType + "."+i+".unprovisionableIfNull" , false), false);
2690 attributeConfig.setUnprovisionableIfNull(unprovisionableIfNull);
2691 }
2692
2693 {
2694 String translationContinueCondition = this.retrieveConfigString(objectType + "."+i+".translationContinueCondition" , false);
2695 attributeConfig.setTranslationContinueCondition(translationContinueCondition);
2696 }
2697
2698 {
2699 String translateExpressionCreateOnly = this.retrieveConfigString(objectType+"."+i+".translateExpressionCreateOnly" , false);
2700 attributeConfig.setTranslateExpressionCreateOnly(translateExpressionCreateOnly);
2701 }
2702
2703 {
2704 String translateFromStaticValues = this.retrieveConfigString(objectType + "."+i+".translateFromStaticValues" , false);
2705 attributeConfig.setTranslateFromStaticValues(translateFromStaticValues);
2706 }
2707
2708 {
2709 String translateFromStaticValuesCreateOnly = this.retrieveConfigString(objectType+"."+i+".translateFromStaticValuesCreateOnly" , false);
2710 attributeConfig.setTranslateFromStaticValuesCreateOnly(translateFromStaticValuesCreateOnly);
2711 }
2712
2713 {
2714 String translateFromGrouperProvisioningGroupField = this.retrieveConfigString(objectType+"."+i+".translateFromGrouperProvisioningGroupField" , false);
2715 attributeConfig.setTranslateFromGrouperProvisioningGroupField(translateFromGrouperProvisioningGroupField);
2716 }
2717
2718 {
2719 String translateFromGrouperProvisioningEntityField = this.retrieveConfigString(objectType+"."+i+".translateFromGrouperProvisioningEntityField" , false);
2720 attributeConfig.setTranslateFromGrouperProvisioningEntityField(translateFromGrouperProvisioningEntityField);
2721 }
2722
2723 {
2724 String translateFromGrouperTargetGroupField = this.retrieveConfigString(objectType+"."+i+".translateFromGrouperTargetGroupField" , false);
2725 attributeConfig.setTranslateFromGrouperTargetGroupField(translateFromGrouperTargetGroupField);
2726 }
2727
2728 {
2729 String translateFromGrouperTargetEntityField = this.retrieveConfigString(objectType+"."+i+".translateFromGrouperTargetEntityField" , false);
2730 attributeConfig.setTranslateFromGrouperTargetEntityField(translateFromGrouperTargetEntityField);
2731 }
2732
2733 {
2734 String translateFromGrouperProvisioningGroupFieldCreateOnly = this.retrieveConfigString(objectType+"."+i+".translateFromGrouperProvisioningGroupFieldCreateOnly" , false);
2735 attributeConfig.setTranslateFromGrouperProvisioningGroupFieldCreateOnly(translateFromGrouperProvisioningGroupFieldCreateOnly);
2736 }
2737
2738 {
2739 String translateFromGrouperProvisioningEntityFieldCreateOnly = this.retrieveConfigString(objectType+"."+i+".translateFromGrouperProvisioningEntityFieldCreateOnly" , false);
2740 attributeConfig.setTranslateFromGrouperProvisioningEntityFieldCreateOnly(translateFromGrouperProvisioningEntityFieldCreateOnly);
2741 }
2742
2743 {
2744 boolean showAttributeCrud = GrouperUtil.booleanValue(this.retrieveConfigBoolean(objectType + "."+i+".showAttributeCrud" , false), false);
2745 if (showAttributeCrud) {
2746
2747 {
2748 boolean insert = GrouperUtil.booleanValue(this.retrieveConfigBoolean(objectType + "."+i+".insert" , false), true);
2749 attributeConfig.setInsert(insert);
2750 }
2751
2752 {
2753 boolean update = GrouperUtil.booleanValue(this.retrieveConfigBoolean(objectType+"."+i+".update" , false), true);
2754 attributeConfig.setUpdate(update);
2755 }
2756 {
2757 boolean select = GrouperUtil.booleanValue(this.retrieveConfigBoolean(objectType + "."+i+".select" , false), true);
2758 attributeConfig.setSelect(select);
2759 }
2760 }
2761 }
2762
2763 {
2764 boolean showAttributeValueSettings = GrouperUtil.booleanValue(this.retrieveConfigBoolean(objectType + "."+i+".showAttributeValueSettings" , false), false);
2765 Boolean multiValued = null;
2766 if (showAttributeValueSettings) {
2767 multiValued = this.retrieveConfigBoolean(objectType + "."+i+".multiValued" , false);
2768 }
2769
2770 if (multiValued == null) {
2771 if (StringUtils.equals(objectType, "targetGroupAttribute") && !StringUtils.isBlank(this.groupMembershipAttributeName)
2772 && StringUtils.equals(this.groupMembershipAttributeName, name)) {
2773 multiValued = true;
2774 }
2775 if (StringUtils.equals(objectType, "targetEntityAttribute") && !StringUtils.isBlank(this.entityMembershipAttributeName)
2776 && StringUtils.equals(this.entityMembershipAttributeName, name)) {
2777 multiValued = true;
2778 }
2779 }
2780 attributeConfig.setMultiValued(multiValued == null ? false: multiValued);
2781
2782 if (showAttributeValueSettings) {
2783 {
2784 String defaultValue = this.retrieveConfigString(objectType + "."+i+".defaultValue" , false);
2785 attributeConfig.setDefaultValue(defaultValue);
2786 }
2787
2788
2789 {
2790 GrouperProvisioningConfigurationAttributeValueType valueType =
2791 GrouperProvisioningConfigurationAttributeValueType.valueOfIgnoreCase(
2792 this.retrieveConfigString(objectType+ "."+i+".valueType" , false), false);
2793 if (valueType == null) {
2794 valueType = GrouperProvisioningConfigurationAttributeValueType.STRING;
2795 }
2796 attributeConfig.setValueType(valueType);
2797 }
2798
2799 {
2800 String ignoreIfMatchesValuesRaw = this.retrieveConfigString(objectType + "."+i+".ignoreIfMatchesValue" , false);
2801 if (!StringUtils.isBlank(ignoreIfMatchesValuesRaw)) {
2802 GrouperProvisioningConfigurationAttributeValueType valueType = GrouperUtil.defaultIfNull(attributeConfig.getValueType(),
2803 GrouperProvisioningConfigurationAttributeValueType.STRING);
2804
2805 for (String ignoreIfMatchesValueRaw : GrouperUtil.splitTrim(ignoreIfMatchesValuesRaw, ",")) {
2806 ignoreIfMatchesValueRaw = StringUtils.replace(ignoreIfMatchesValueRaw, "U+002C", ",");
2807 Object ignoreIfMatchesValue = valueType.convert(ignoreIfMatchesValueRaw);
2808 attributeConfig.getIgnoreIfMatchesValues().add(ignoreIfMatchesValue);
2809 }
2810 }
2811 }
2812
2813 {
2814
2815 Boolean caseSensitiveCompare = GrouperUtil.booleanValue(this.retrieveConfigBoolean(objectType + "."+i+".caseSensitiveCompare" , false), true);
2816 attributeConfig.setCaseSensitiveCompare(caseSensitiveCompare);
2817 }
2818
2819 }
2820 }
2821
2822 if ("targetGroupAttribute".equals(objectType)) {
2823 if (targetGroupAttributeNameToConfig.containsKey(name)) {
2824 throw new RuntimeException("Multiple configurations for " + objectType + " attribute: " + name);
2825 }
2826
2827 targetGroupAttributeNameToConfig.put(name, attributeConfig);
2828
2829 } else if ("targetEntityAttribute".equals(objectType)) {
2830 if (targetEntityAttributeNameToConfig.containsKey(name)) {
2831 throw new RuntimeException("Multiple configurations for " + objectType + " attribute: " + name);
2832 }
2833 targetEntityAttributeNameToConfig.put(name, attributeConfig);
2834
2835 } else if ("targetMembershipAttribute".equals(objectType)) {
2836 if (targetMembershipAttributeNameToConfig.containsKey(name)) {
2837 throw new RuntimeException("Multiple configurations for " + objectType + " attribute: " + name);
2838 }
2839 targetMembershipAttributeNameToConfig.put(name, attributeConfig);
2840
2841 } else {
2842 throw new RuntimeException("Invalid object type: '" + objectType + "'");
2843 }
2844 }
2845 }
2846
2847 this.hasTargetGroupLink = GrouperUtil.defaultIfNull(this.retrieveConfigBoolean("hasTargetGroupLink", false), false);
2848 if (this.hasTargetGroupLink) {
2849 this.debugMap.put("hasTargetGroupLink", this.hasTargetGroupLink);
2850 }
2851
2852 this.hasTargetEntityLink = GrouperUtil.defaultIfNull(this.retrieveConfigBoolean("hasTargetEntityLink", false), false);
2853 if (this.hasTargetEntityLink) {
2854 this.debugMap.put("hasTargetEntityLink", this.hasTargetEntityLink);
2855 }
2856
2857 if (GrouperUtil.defaultIfNull(this.retrieveConfigBoolean("group2advanced", false), false)) {
2858 this.groupsRequireMembers = GrouperUtil.defaultIfNull(this.retrieveConfigBoolean("groupsRequireMembers", false), false);
2859 }
2860
2861 this.groupSearchFilter = this.retrieveConfigString("groupSearchFilter", false);
2862
2863 this.membershipMatchingIdExpression = this.retrieveConfigString("membershipMatchingIdExpression", false);
2864
2865 this.unresolvableSubjectsInsert = GrouperUtil.defaultIfNull(this.retrieveConfigBoolean("unresolvableSubjectsInsert", false), false);
2866
2867 this.unresolvableSubjectsRemove = GrouperUtil.defaultIfNull(this.retrieveConfigBoolean("unresolvableSubjectsRemove", false), false);
2868
2869 this.removeAccentedChars = GrouperUtil.defaultIfNull(this.retrieveConfigBoolean("removeAccentedChars", false), false);
2870
2871 this.logAllObjectsVerbose = GrouperUtil.defaultIfNull(this.retrieveConfigBoolean("logAllObjectsVerbose", false), false);
2872
2873 this.logAllObjectsVerboseForTheseGroupNames = GrouperUtil.nonNull(GrouperUtil.splitTrimToSet(this.retrieveConfigString("logAllObjectsVerboseForTheseGroupNames", false), ","));
2874 this.logAllObjectsVerboseForTheseSubjectIds = GrouperUtil.nonNull(GrouperUtil.splitTrimToSet(this.retrieveConfigString("logAllObjectsVerboseForTheseSubjectIds", false), ","));
2875
2876 this.logAllObjectsVerboseEntityAttributes = GrouperUtil.nonNull(GrouperUtil.splitTrimToSet(this.retrieveConfigString("logAllObjectsVerboseEntityAttributes", false), ","));
2877 this.logAllObjectsVerboseGroupAttributes = GrouperUtil.nonNull(GrouperUtil.splitTrimToSet(this.retrieveConfigString("logAllObjectsVerboseGroupAttributes", false), ","));
2878
2879 if (GrouperUtil.length(this.logAllObjectsVerboseForTheseGroupNames) > 0
2880 || GrouperUtil.length(this.logAllObjectsVerboseForTheseSubjectIds) > 0 ) {
2881 this.logCertainObjects = true;
2882 }
2883
2884 this.logAllObjectsVerboseToDaemonDbLog = GrouperUtil.defaultIfNull(this.retrieveConfigBoolean("logAllObjectsVerboseToDaemonDbLog", false), true);
2885
2886 this.logAllObjectsVerboseToLogFile = GrouperUtil.defaultIfNull(this.retrieveConfigBoolean("logAllObjectsVerboseToLogFile", false), true);
2887
2888 this.logCommandsAlways = GrouperUtil.defaultIfNull(this.retrieveConfigBoolean("logCommandsAlways", false), false);
2889
2890 this.logCommandsOnError = GrouperUtil.defaultIfNull(this.retrieveConfigBoolean("logCommandsOnError", false), false);
2891
2892 this.logMaxErrorsPerType = GrouperUtil.intValue(this.retrieveConfigInt("logMaxErrorsPerType", false), 10);
2893
2894 this.logCompareCalculations = GrouperUtil.defaultIfNull(this.retrieveConfigBoolean("logCompareCalculations", false), false);
2895
2896 this.logAllObjectsVerboseCount = GrouperUtil.intValue(this.retrieveConfigInt("logAllObjectsVerboseCount", false), 10);
2897
2898 this.debugLog = GrouperUtil.defaultIfNull(this.retrieveConfigBoolean("debugLog", false), false);
2899
2900 this.operateOnGrouperEntities = GrouperUtil.booleanValue(this.retrieveConfigBoolean("operateOnGrouperEntities", false), false);
2901 this.operateOnGrouperMemberships = GrouperUtil.booleanValue(this.retrieveConfigBoolean("operateOnGrouperMemberships", false), false);
2902 this.operateOnGrouperGroups = GrouperUtil.booleanValue(this.retrieveConfigBoolean("operateOnGrouperGroups", false), false);
2903
2904 this.subjectSourcesToProvision = GrouperUtil.nonNull(GrouperUtil.splitTrimToSet(this.retrieveConfigString("subjectSourcesToProvision", false), ","));
2905
2906 for (String sourceId : this.subjectSourcesToProvision) {
2907 if (null == SourceManager.getInstance().getSource(sourceId)) {
2908 throw new RuntimeException("Cant find source: '" + sourceId + "'");
2909 }
2910 }
2911 this.debugMap.put("subjectSourcesToProvision", GrouperUtil.join(this.subjectSourcesToProvision.iterator(), ','));
2912
2913 this.deleteMembershipsForUnprovisionableUsers = GrouperUtil.booleanValue(this.retrieveConfigBoolean("deleteMembershipsForUnprovisionableUsers", false), false);
2914
2915 this.groupAttributeValueCacheHas = GrouperUtil.booleanValue(this.retrieveConfigBoolean("groupAttributeValueCacheHas", false), false);
2916 if (this.groupAttributeValueCacheHas) {
2917 this.groupAttributeDbCaches = new GrouperProvisioningConfigurationAttributeDbCache[4];
2918
2919 for (int i=0;i<4;i++) {
2920 boolean theGroupAttributeValueCacheHas = GrouperUtil.booleanValue(this.retrieveConfigBoolean("groupAttributeValueCache" + i + "has", false), false);
2921 if (!theGroupAttributeValueCacheHas) {
2922 continue;
2923 }
2924 this.groupAttributeDbCaches[i] = new GrouperProvisioningConfigurationAttributeDbCache(this.grouperProvisioner, i, "group");
2925 String theGroupAttributeValueCache0source = this.retrieveConfigString("groupAttributeValueCache" + i + "source", true);
2926 this.groupAttributeDbCaches[i].setSource(
2927 GrouperProvisioningConfigurationAttributeDbCacheSource.valueOfIgnoreCase(theGroupAttributeValueCache0source, true));
2928
2929 String theGroupAttributeValueCache0type = this.retrieveConfigString("groupAttributeValueCache" + i + "type", true);
2930 this.groupAttributeDbCaches[i].setType(
2931 GrouperProvisioningConfigurationAttributeDbCacheType.valueOfIgnoreCase(theGroupAttributeValueCache0type, true));
2932
2933 if (this.groupAttributeDbCaches[i].getType() == GrouperProvisioningConfigurationAttributeDbCacheType.attribute) {
2934 this.groupAttributeDbCaches[i].setAttributeName(this.retrieveConfigString("groupAttributeValueCache" + i + "groupAttribute", true));
2935 } else if (this.groupAttributeDbCaches[i].getType() == GrouperProvisioningConfigurationAttributeDbCacheType.translationScript) {
2936 this.groupAttributeDbCaches[i].setTranslationScript(this.retrieveConfigString("groupAttributeValueCache" + i + "translationScript", true));
2937 } else if (this.groupAttributeDbCaches[i].getType() == GrouperProvisioningConfigurationAttributeDbCacheType.object) {
2938
2939 } else {
2940 throw new RuntimeException("Invalid attribute cache type: " + "groupAttributeValueCache" + i + "type" + ", "
2941 + this.groupAttributeDbCaches[i].getType());
2942 }
2943 }
2944 }
2945
2946 this.entityAttributeValueCacheHas = GrouperUtil.booleanValue(this.retrieveConfigBoolean("entityAttributeValueCacheHas", false), false);
2947 if (this.entityAttributeValueCacheHas) {
2948 this.entityAttributeDbCaches = new GrouperProvisioningConfigurationAttributeDbCache[4];
2949
2950 for (int i=0;i<4;i++) {
2951 boolean theEntityAttributeValueCacheHas = GrouperUtil.booleanValue(this.retrieveConfigBoolean("entityAttributeValueCache" + i + "has", false), false);
2952 if (!theEntityAttributeValueCacheHas) {
2953 continue;
2954 }
2955 this.entityAttributeDbCaches[i] = new GrouperProvisioningConfigurationAttributeDbCache(this.grouperProvisioner, i, "entity");
2956
2957 Boolean theEntityAttributeValueCacheNullChecksInScript = this.retrieveConfigBoolean("entityAttributeValueCache" + i + "nullChecksInScript", false);
2958 if (theEntityAttributeValueCacheNullChecksInScript == null) {
2959 theEntityAttributeValueCacheNullChecksInScript = false;
2960 }
2961 this.entityAttributeDbCaches[i].setNullChecksInScript(theEntityAttributeValueCacheNullChecksInScript);
2962
2963 String entityAttributeValueCacheTranslationContinueCondition = this.retrieveConfigString("entityAttributeValueCache" + i + "translationContinueCondition", false);
2964 this.entityAttributeDbCaches[i].setTranslationContinueConditon(entityAttributeValueCacheTranslationContinueCondition);
2965
2966 String theEntityAttributeValueCache0source = this.retrieveConfigString("entityAttributeValueCache" + i + "source", true);
2967 this.entityAttributeDbCaches[i].setSource(
2968 GrouperProvisioningConfigurationAttributeDbCacheSource.valueOfIgnoreCase(theEntityAttributeValueCache0source, true));
2969
2970 String theEntityAttributeValueCache0type = this.retrieveConfigString("entityAttributeValueCache" + i + "type", true);
2971 this.entityAttributeDbCaches[i].setType(
2972 GrouperProvisioningConfigurationAttributeDbCacheType.valueOfIgnoreCase(theEntityAttributeValueCache0type, true));
2973
2974 if (this.entityAttributeDbCaches[i].getType() == GrouperProvisioningConfigurationAttributeDbCacheType.attribute) {
2975 this.entityAttributeDbCaches[i].setAttributeName(this.retrieveConfigString("entityAttributeValueCache" + i + "entityAttribute", true));
2976 } else if (this.entityAttributeDbCaches[i].getType() == GrouperProvisioningConfigurationAttributeDbCacheType.translationScript) {
2977 this.entityAttributeDbCaches[i].setTranslationScript(this.retrieveConfigString("entityAttributeValueCache" + i + "translationScript", true));
2978 } else if (this.entityAttributeDbCaches[i].getType() == GrouperProvisioningConfigurationAttributeDbCacheType.subjectTranslationScript) {
2979 this.entityAttributeDbCaches[i].setTranslationScript(this.retrieveConfigString("entityAttributeValueCache" + i + "translationScript", true));
2980 } else if (this.entityAttributeDbCaches[i].getType() == GrouperProvisioningConfigurationAttributeDbCacheType.object) {
2981
2982 } else {
2983 throw new RuntimeException("Invalid attribute cache type: " + "entityAttributeValueCache" + i + "type" + ", "
2984 + this.entityAttributeDbCaches[i].getType());
2985 }
2986 }
2987 }
2988
2989 this.refreshSubjectLinkIfLessThanAmount = GrouperUtil.intValue(this.retrieveConfigInt("refreshSubjectLinkIfLessThanAmount", false), 20);
2990 this.refreshGroupLinkIfLessThanAmount = GrouperUtil.intValue(this.retrieveConfigInt("refreshGroupLinkIfLessThanAmount", false), 20);
2991 this.refreshEntityLinkIfLessThanAmount = GrouperUtil.intValue(this.retrieveConfigInt("refreshEntityLinkIfLessThanAmount", false), 20);
2992
2993 this.scoreConvertToFullSyncThreshold = GrouperUtil.intValue(this.retrieveConfigInt("scoreConvertToFullSyncThreshold", false), 10000);
2994 this.membershipsConvertToGroupSyncThreshold = GrouperUtil.intValue(this.retrieveConfigInt("membershipsConvertToGroupSyncThreshold", false), 500);
2995
2996 this.entitySearchAllFilter = this.retrieveConfigString("userSearchAllFilter", false);
2997 this.groupSearchFilter = this.retrieveConfigString("groupSearchFilter", false);
2998 this.groupSearchAllFilter = this.retrieveConfigString("groupSearchAllFilter", false);
2999
3000 this.customizeGroupCrud = GrouperUtil.booleanValue(this.retrieveConfigBoolean("customizeGroupCrud", false), false);
3001
3002 if (!this.operateOnGrouperGroups) {
3003 this.insertGroups = false;
3004
3005 this.deleteGroups = false;
3006
3007 this.updateGroups = false;
3008
3009 this.selectGroups = false;
3010
3011 this.deleteGroupsIfNotExistInGrouper = false;
3012
3013 this.deleteGroupsIfGrouperDeleted = false;
3014
3015 this.deleteGroupsIfGrouperCreated = false;
3016
3017 this.deleteGroupsIfUnmarkedProvisionable = false;
3018 }
3019
3020 if (this.customizeGroupCrud) {
3021
3022 this.insertGroups = GrouperUtil.booleanValue(this.retrieveConfigBoolean("insertGroups", false), true);
3023
3024 this.selectGroups = GrouperUtil.booleanValue(this.retrieveConfigBoolean("selectGroups", false), true);
3025
3026 this.updateGroups = GrouperUtil.booleanValue(this.retrieveConfigBoolean("updateGroups", false), true);
3027
3028 this.deleteGroups = GrouperUtil.booleanValue(this.retrieveConfigBoolean("deleteGroups", false), true);
3029
3030 this.deleteGroupsIfNotExistInGrouper = GrouperUtil.booleanValue(this.retrieveConfigBoolean("deleteGroupsIfNotExistInGrouper", false), false);
3031
3032 this.deleteGroupsIfGrouperDeleted = GrouperUtil.booleanValue(this.retrieveConfigBoolean("deleteGroupsIfGrouperDeleted", false), false);
3033
3034 this.deleteGroupsIfGrouperCreated = GrouperUtil.booleanValue(this.retrieveConfigBoolean("deleteGroupsIfGrouperCreated", false),
3035 (deleteGroups && !this.deleteGroupsIfNotExistInGrouper && !this.deleteGroupsIfGrouperDeleted));
3036
3037 this.deleteGroupsIfUnmarkedProvisionable = GrouperUtil.booleanValue(this.retrieveConfigBoolean("deleteGroupsIfUnmarkedProvisionable", false), true);
3038 }
3039
3040
3041 if (!this.operateOnGrouperMemberships) {
3042 this.insertMemberships = false;
3043
3044 this.deleteMemberships = false;
3045
3046 this.selectMemberships = false;
3047
3048 this.deleteMembershipsIfNotExistInGrouper = false;
3049
3050 this.deleteValueIfManagedByGrouper = false;
3051
3052 this.deleteMembershipsForUnprovisionableUsers = false;
3053
3054 this.deleteMembershipsIfGrouperDeleted = false;
3055
3056 this.deleteMembershipsIfGrouperCreated = false;
3057
3058 this.deleteMembershipsIfGroupUnmarkedProvisionable = false;
3059 }
3060
3061
3062 this.customizeMembershipCrud = GrouperUtil.booleanValue(this.retrieveConfigBoolean("customizeMembershipCrud", false), false);
3063 if (this.customizeMembershipCrud) {
3064
3065 this.insertMemberships = GrouperUtil.booleanValue(this.retrieveConfigBoolean("insertMemberships", false), true);
3066
3067 this.replaceMemberships = GrouperUtil.booleanValue(this.retrieveConfigBoolean("replaceMemberships", false), false);
3068
3069 this.selectMemberships = GrouperUtil.booleanValue(this.retrieveConfigBoolean("selectMemberships", false), true);
3070
3071 this.deleteMemberships = GrouperUtil.booleanValue(this.retrieveConfigBoolean("deleteMemberships", false), true);
3072
3073 this.deleteMembershipsIfNotExistInGrouper = GrouperUtil.booleanValue(this.retrieveConfigBoolean("deleteMembershipsIfNotExistInGrouper", false), false);
3074 this.deleteValueIfManagedByGrouper = GrouperUtil.booleanValue(this.retrieveConfigBoolean("deleteValueIfManagedByGrouper", false), false);
3075 this.deleteMembershipsOnlyInTrackedGroups = GrouperUtil.booleanValue(this.retrieveConfigBoolean("deleteMembershipsOnlyInTrackedGroups", false), true);
3076
3077 this.deleteMembershipsIfGrouperDeleted = GrouperUtil.booleanValue(this.retrieveConfigBoolean("deleteMembershipsIfGrouperDeleted", false), false);
3078
3079 this.deleteMembershipsIfGrouperCreated = GrouperUtil.booleanValue(this.retrieveConfigBoolean("deleteMembershipsIfGrouperCreated", false),
3080 (deleteMemberships && !this.deleteMembershipsIfNotExistInGrouper && !this.deleteMembershipsIfGrouperDeleted));
3081
3082 this.deleteMembershipsIfGroupUnmarkedProvisionable = GrouperUtil.booleanValue(this.retrieveConfigBoolean("deleteMembershipsIfGroupUnmarkedProvisionable", false), true);
3083 }
3084
3085 boolean errorHandlingShow = GrouperUtil.booleanValue(this.retrieveConfigBoolean("errorHandlingShow", false), false);
3086
3087 if (errorHandlingShow) {
3088
3089 this.errorHandlingLogErrors = GrouperUtil.booleanValue(this.retrieveConfigBoolean("errorHandlingLogErrors", false), true);
3090 this.errorHandlingLogCountPerType = GrouperUtil.intValue(this.retrieveConfigInt("errorHandlingLogCountPerType", false), 5);
3091 this.errorHandlingProvisionerDaemonShouldFailOnObjectError = GrouperUtil.booleanValue(this.retrieveConfigBoolean("errorHandlingProvisionerDaemonShouldFailOnObjectError", false), true);
3092 this.errorHandlingInvalidDataIsAnError = GrouperUtil.booleanValue(this.retrieveConfigBoolean("errorHandlingInvalidDataIsAnError", false), true);
3093 this.errorHandlingLengthValidationIsAnError = GrouperUtil.booleanValue(this.retrieveConfigBoolean("errorHandlingLengthValidationIsAnError", false), true);
3094 this.errorHandlingMatchingValidationIsAnError = GrouperUtil.booleanValue(this.retrieveConfigBoolean("errorHandlingMatchingValidationIsAnError", false), true);
3095 this.errorHandlingRequiredValidationIsAnError = GrouperUtil.booleanValue(this.retrieveConfigBoolean("errorHandlingRequiredValidationIsAnError", false), true);
3096 this.errorHandlingTargetObjectDoesNotExistIsAnError = GrouperUtil.booleanValue(this.retrieveConfigBoolean("errorHandlingTargetObjectDoesNotExistIsAnError", false), true);
3097
3098 this.errorHandlingPercentLevel1 = GrouperUtil.floatValue(this.retrieveConfigDouble("errorHandlingPercentLevel1", false), 1);
3099 this.errorHandlingMinutesLevel1 = GrouperUtil.floatValue(this.retrieveConfigDouble("errorHandlingMinutesLevel1", false), 180);
3100 this.errorHandlingPercentLevel2 = GrouperUtil.floatValue(this.retrieveConfigDouble("errorHandlingPercentLevel2", false), 5);
3101 this.errorHandlingMinutesLevel2 = GrouperUtil.floatValue(this.retrieveConfigDouble("errorHandlingMinutesLevel2", false), 120);
3102 this.errorHandlingPercentLevel3 = GrouperUtil.floatValue(this.retrieveConfigDouble("errorHandlingPercentLevel3", false), 10);
3103 this.errorHandlingMinutesLevel3 = GrouperUtil.floatValue(this.retrieveConfigDouble("errorHandlingMinutesLevel3", false), 12);
3104 this.errorHandlingPercentLevel4 = GrouperUtil.floatValue(this.retrieveConfigDouble("errorHandlingPercentLevel4", false), 100);
3105 this.errorHandlingMinutesLevel4 = GrouperUtil.floatValue(this.retrieveConfigDouble("errorHandlingMinutesLevel4", false), 3);
3106
3107 }
3108
3109 this.makeChangesToEntities = GrouperUtil.booleanValue(this.retrieveConfigBoolean("makeChangesToEntities", false), false);
3110
3111
3112 if (this.makeChangesToEntities) {
3113 this.insertEntities = true;
3114 this.updateEntities = true;
3115 this.deleteEntities = true;
3116 this.deleteEntitiesIfGrouperCreated = true;
3117 }
3118
3119 this.customizeEntityCrud = GrouperUtil.booleanValue(this.retrieveConfigBoolean("customizeEntityCrud", false), false);
3120
3121 if (!this.operateOnGrouperEntities) {
3122 this.insertEntities = false;
3123
3124 this.deleteEntities = false;
3125
3126 this.updateEntities = false;
3127
3128 this.selectEntities = false;
3129
3130 this.deleteEntitiesIfNotExistInGrouper = false;
3131
3132 this.deleteEntitiesIfGrouperDeleted = false;
3133
3134 this.deleteEntitiesIfGrouperCreated = false;
3135
3136 }
3137
3138 if (this.customizeEntityCrud) {
3139 this.insertEntities = GrouperUtil.booleanValue(this.retrieveConfigBoolean("insertEntities", false), this.insertEntities);
3140
3141 this.deleteEntities = GrouperUtil.booleanValue(this.retrieveConfigBoolean("deleteEntities", false), this.deleteEntities);
3142
3143 this.updateEntities = GrouperUtil.booleanValue(this.retrieveConfigBoolean("updateEntities", false), this.updateEntities);
3144
3145 this.selectEntities = GrouperUtil.booleanValue(this.retrieveConfigBoolean("selectEntities", false), this.selectEntities);
3146
3147 this.deleteEntitiesIfNotExistInGrouper = GrouperUtil.booleanValue(this.retrieveConfigBoolean("deleteEntitiesIfNotExistInGrouper", false), this.deleteEntitiesIfNotExistInGrouper);
3148
3149 this.deleteEntitiesIfGrouperDeleted = GrouperUtil.booleanValue(this.retrieveConfigBoolean("deleteEntitiesIfGrouperDeleted", false), this.deleteEntitiesIfGrouperDeleted);
3150
3151 this.deleteEntitiesIfGrouperCreated = GrouperUtil.booleanValue(this.retrieveConfigBoolean("deleteEntitiesIfGrouperCreated", false),
3152 (this.makeChangesToEntities && deleteEntities && !this.deleteEntitiesIfNotExistInGrouper && !this.deleteEntitiesIfGrouperDeleted));
3153
3154 }
3155 this.selectAllEntities = GrouperUtil.booleanValue(this.retrieveConfigBoolean("selectAllEntities", false), this.operateOnGrouperEntities);
3156 this.selectAllGroups = GrouperUtil.booleanValue(this.retrieveConfigBoolean("selectAllGroups", false), this.operateOnGrouperGroups);
3157
3158 this.groupIdOfUsersToProvision = this.retrieveConfigString("groupIdOfUsersToProvision", false);
3159 this.groupIdOfUsersNotToProvision = this.retrieveConfigString("groupIdOfUsersNotToProvision", false);
3160 this.searchAttributeNameToRetrieveEntities = this.retrieveConfigString("searchAttributeNameToRetrieveEntities", false);
3161
3162 this.loadEntitiesToGrouperTable = GrouperUtil.booleanValue(this.retrieveConfigBoolean("loadEntitiesToGrouperTable", false), false);
3163
3164 this.hasEntityAttributes = GrouperUtil.booleanValue(this.retrieveConfigBoolean("entityResolver.entityAttributesNotInSubjectSource", false), false);
3165 this.resolveAttributesWithSql = GrouperUtil.booleanValue(this.retrieveConfigBoolean("entityResolver.resolveAttributesWithSQL", false), false);
3166 this.resolveAttributesWithLdap = GrouperUtil.booleanValue(this.retrieveConfigBoolean("entityResolver.resolveAttributesWithLDAP", false), false);
3167 this.useGlobalSqlResolver = GrouperUtil.booleanValue(this.retrieveConfigBoolean("entityResolver.useGlobalSQLResolver", false), false);
3168
3169 this.useGlobalLdapResolver = GrouperUtil.booleanValue(this.retrieveConfigBoolean("entityResolver.useGlobalLDAPResolver", false), false);
3170 this.globalSqlResolver = this.retrieveConfigString("entityResolver.globalSQLResolver", false);
3171 this.globalLdapResolver = this.retrieveConfigString("entityResolver.globalLDAPResolver", false);
3172 this.selectAllSqlOnFull = GrouperUtil.booleanValue(this.retrieveConfigBoolean("entityResolver.selectAllSQLOnFull", false), true);
3173 this.filterAllLDAPOnFull = GrouperUtil.booleanValue(this.retrieveConfigBoolean("entityResolver.filterAllLDAPOnFull", false), true);
3174
3175 this.entityAttributesSqlExternalSystem = this.retrieveConfigString("entityResolver.sqlConfigId", false);
3176 this.entityAttributesTableViewName = this.retrieveConfigString("entityResolver.tableOrViewName", false);
3177 this.entityAttributesColumnNames = this.retrieveConfigString("entityResolver.columnNames", false);
3178 this.entityAttributesSubjectSourceIdColumn = this.retrieveConfigString("entityResolver.subjectSourceIdColumn", false);
3179 this.entityAttributesSubjectSearchMatchingColumn = this.retrieveConfigString("entityResolver.subjectSearchMatchingColumn", false);
3180 this.entityAttributesSqlMappingType = this.retrieveConfigString("entityResolver.sqlMappingType", false);
3181 this.entityAttributesSqlMappingEntityAttribute = this.retrieveConfigString("entityResolver.sqlMappingEntityAttribute", false);
3182 this.entityAttributesSqlMappingExpression = this.retrieveConfigString("entityResolver.sqlMappingExpression", false);
3183 this.entityAttributesLastUpdatedColumn = this.retrieveConfigString("entityResolver.lastUpdatedColumn", false);
3184 this.entityAttributesLastUpdatedType = this.retrieveConfigString("entityResolver.lastUpdatedType", false);
3185
3186 this.entityAttributesLdapExternalSystem = this.retrieveConfigString("entityResolver.ldapConfigId", false);
3187 this.entityAttributesLdapBaseDn = this.retrieveConfigString("entityResolver.baseDN", false);
3188 this.entityAttributesLdapSubjectSource = this.retrieveConfigString("entityResolver.subjectSourceId", false);
3189 this.entityAttributesLdapSearchScope = this.retrieveConfigString("entityResolver.searchScope", false);
3190 this.entityAttributesLdapFilterPart = this.retrieveConfigString("entityResolver.filterPart", false);
3191 this.entityAttributesLdapAttributes = this.retrieveConfigString("entityResolver.attributes", false);
3192 this.entityAttributesLdapMutliValuedAttributes = this.retrieveConfigString("entityResolver.multiValuedLdapAttributes", false);
3193 this.entityAttributesLdapMatchingSearchAttribute = this.retrieveConfigString("entityResolver.ldapMatchingSearchAttribute", false);
3194 this.entityAttributesLdapMappingType = this.retrieveConfigString("entityResolver.ldapMappingType", false);
3195 this.entityAttributesLdapMappingEntityAttribute = this.retrieveConfigString("entityResolver.ldapMappingEntityAttribute", false);
3196 this.entityAttributesLdapMatchingExpression = this.retrieveConfigString("entityResolver.ldapMatchingExpression", false);
3197 this.entityAttributesLdapLastUpdatedAttribute = this.retrieveConfigString("entityResolver.lastUpdatedAttribute", false);
3198 this.entityAttributesLdapLastUpdatedAttributeFormat = this.retrieveConfigString("entityResolver.lastUpdatedFormat", false);
3199
3200 this.hasGroupAttributes = GrouperUtil.booleanValue(this.retrieveConfigBoolean("groupResolver.groupResolverAttributes", false), false);
3201 this.resolveGroupAttributesWithSql = GrouperUtil.booleanValue(this.retrieveConfigBoolean("groupResolver.resolveAttributesWithSQL", false), false);
3202 this.groupAttributesSqlExternalSystem = this.retrieveConfigString("groupResolver.sqlConfigId", false);
3203 this.groupAttributesTableViewName = this.retrieveConfigString("groupResolver.tableOrViewName", false);
3204 this.groupAttributesColumnNames = this.retrieveConfigString("groupResolver.columnNames", false);
3205 this.groupAttributesTableStructure = this.retrieveConfigString("groupResolver.tableStructure", false);
3206 this.groupAttributesAttributeNameColumnName = this.retrieveConfigString("groupResolver.attributeNameColumnName", false);
3207 this.groupAttributesAttributeValueColumnName = this.retrieveConfigString("groupResolver.attributeValueColumnName", false);
3208 this.groupAttributesGroupMatchingColumn = this.retrieveConfigString("groupResolver.groupMatchingColumn", false);
3209 this.groupAttributesLastUpdatedColumn = this.retrieveConfigString("groupResolver.lastUpdatedColumn", false);
3210 this.groupAttributesLastUpdatedType = this.retrieveConfigString("groupResolver.lastUpdatedType", false);
3211 this.groupAttributesRecalcMembershipsOnIncremental = GrouperUtil.booleanValue(this.retrieveConfigBoolean("groupResolver.recalcMembershipsOnIncremental", false), false);
3212 this.groupAttributesSelectAllSqlOnFull = GrouperUtil.booleanValue(this.retrieveConfigBoolean("groupResolver.selectAllSQLOnFull", false), false);
3213
3214
3215 this.threadPoolSize = GrouperUtil.intValue(this.retrieveConfigInt("threadPoolSize", false), 5);
3216 if (this.threadPoolSize < 1) {
3217 this.threadPoolSize = 1;
3218 }
3219
3220 if (this.entityAttributesMultivalued == null) {
3221 this.entityAttributesMultivalued = new HashSet<String>();
3222 }
3223
3224 if (this.groupAttributesMultivalued == null) {
3225 this.groupAttributesMultivalued = new HashSet<String>();
3226 }
3227
3228 this.groupSelectAttributes = new HashSet<String>();
3229
3230 for (String targetGroupAttributeName : this.targetGroupAttributeNameToConfig.keySet()) {
3231 GrouperProvisioningConfigurationAttribute grouperProvisioningConfigurationAttribute = targetGroupAttributeNameToConfig.get(targetGroupAttributeName);
3232 if (grouperProvisioningConfigurationAttribute.isSelect()) {
3233 this.groupSelectAttributes.add(targetGroupAttributeName);
3234 }
3235
3236 if (!StringUtils.isBlank(this.groupMembershipAttributeName) && StringUtils.equals(this.groupMembershipAttributeName, grouperProvisioningConfigurationAttribute.getName())) {
3237 this.attributeNameForMemberships = targetGroupAttributeName;
3238 grouperProvisioningConfigurationAttribute.setSelect(this.isSelectMemberships());
3239 grouperProvisioningConfigurationAttribute.setInsert(this.isInsertMemberships());
3240 }
3241
3242 if (grouperProvisioningConfigurationAttribute.isMultiValued()) {
3243 this.groupAttributesMultivalued.add(targetGroupAttributeName);
3244 }
3245 }
3246
3247 this.entityMatchingAttributeSameAsSearchAttribute = GrouperUtil.booleanValue(this.retrieveConfigBoolean("entityMatchingAttributeSameAsSearchAttribute", false), true);
3248 int entityMatchingAttributeCount = GrouperUtil.intValue(this.retrieveConfigInt("entityMatchingAttributeCount", false), 0);
3249 this.entityMatchingAttributes = new ArrayList<GrouperProvisioningConfigurationAttribute>();
3250 this.entitySearchAttributes = new ArrayList<GrouperProvisioningConfigurationAttribute>();
3251 for (int i=0;i<entityMatchingAttributeCount;i++) {
3252 String configSuffix = "entityMatchingAttribute" + i + "name";
3253 String matchingAttributeName = this.retrieveConfigString(configSuffix, true);
3254 GrouperProvisioningConfigurationAttribute grouperProvisioningConfigurationAttribute = this.targetEntityAttributeNameToConfig.get(matchingAttributeName);
3255 if (grouperProvisioningConfigurationAttribute == null) {
3256 throw new RuntimeException("Cannot find entity attribute from " + configSuffix + "! '" + matchingAttributeName + "'");
3257 }
3258 this.entityMatchingAttributes.add(grouperProvisioningConfigurationAttribute);
3259 if (entityMatchingAttributeSameAsSearchAttribute) {
3260 this.entitySearchAttributes.add(grouperProvisioningConfigurationAttribute);
3261 }
3262 }
3263
3264 if (!entityMatchingAttributeSameAsSearchAttribute) {
3265 int entitySearchAttributeCount = this.retrieveConfigInt("entitySearchAttributeCount", true);
3266 for (int i=0;i<entitySearchAttributeCount;i++) {
3267 String configSuffix = "entitySearchAttribute" + i + "name";
3268 String searchAttributeName = this.retrieveConfigString(configSuffix, true);
3269 GrouperProvisioningConfigurationAttribute grouperProvisioningConfigurationAttribute = this.targetEntityAttributeNameToConfig.get(searchAttributeName);
3270 if (grouperProvisioningConfigurationAttribute == null) {
3271 throw new RuntimeException("Cannot find entity attribute from " + configSuffix + "! '" + searchAttributeName + "'");
3272 }
3273 this.entitySearchAttributes.add(grouperProvisioningConfigurationAttribute);
3274 }
3275 }
3276
3277 this.groupMatchingAttributeSameAsSearchAttribute = GrouperUtil.booleanValue(this.retrieveConfigBoolean("groupMatchingAttributeSameAsSearchAttribute", false), true);
3278 int groupMatchingAttributeCount = GrouperUtil.intValue(this.retrieveConfigInt("groupMatchingAttributeCount", false), 0);
3279 this.groupMatchingAttributes = new ArrayList<GrouperProvisioningConfigurationAttribute>();
3280 this.groupSearchAttributes = new ArrayList<GrouperProvisioningConfigurationAttribute>();
3281 for (int i=0;i<groupMatchingAttributeCount;i++) {
3282 String configSuffix = "groupMatchingAttribute" + i + "name";
3283 String matchingAttributeName = this.retrieveConfigString(configSuffix, true);
3284 GrouperProvisioningConfigurationAttribute grouperProvisioningConfigurationAttribute = this.targetGroupAttributeNameToConfig.get(matchingAttributeName);
3285 if (grouperProvisioningConfigurationAttribute == null) {
3286 throw new RuntimeException("Cannot find group attribute from " + configSuffix + "! '" + matchingAttributeName + "'");
3287 }
3288 this.groupMatchingAttributes.add(grouperProvisioningConfigurationAttribute);
3289 if (groupMatchingAttributeSameAsSearchAttribute) {
3290 this.groupSearchAttributes.add(grouperProvisioningConfigurationAttribute);
3291 }
3292 }
3293
3294 if (!groupMatchingAttributeSameAsSearchAttribute) {
3295 int groupSearchAttributeCount = this.retrieveConfigInt("groupSearchAttributeCount", true);
3296 for (int i=0;i<groupSearchAttributeCount;i++) {
3297 String configSuffix = "groupSearchAttribute" + i + "name";
3298 String searchAttributeName = this.retrieveConfigString(configSuffix, true);
3299 GrouperProvisioningConfigurationAttribute grouperProvisioningConfigurationAttribute = this.targetGroupAttributeNameToConfig.get(searchAttributeName);
3300 if (grouperProvisioningConfigurationAttribute == null) {
3301 throw new RuntimeException("Cannot find group attribute from " + configSuffix + "! '" + searchAttributeName + "'");
3302 }
3303 this.groupSearchAttributes.add(grouperProvisioningConfigurationAttribute);
3304 }
3305 }
3306
3307 this.entitySelectAttributes = new HashSet<String>();
3308 for (String targetEntityAttributeName : this.targetEntityAttributeNameToConfig.keySet()) {
3309 GrouperProvisioningConfigurationAttribute grouperProvisioningConfigurationAttribute = targetEntityAttributeNameToConfig.get(targetEntityAttributeName);
3310 if (grouperProvisioningConfigurationAttribute.isSelect()) {
3311 this.entitySelectAttributes.add(targetEntityAttributeName);
3312 }
3313
3314 if (!StringUtils.isBlank(this.entityMembershipAttributeName)
3315 && StringUtils.equals(this.entityMembershipAttributeName, grouperProvisioningConfigurationAttribute.getName())) {
3316 this.attributeNameForMemberships = targetEntityAttributeName;
3317 grouperProvisioningConfigurationAttribute.setSelect(this.isSelectMemberships());
3318 grouperProvisioningConfigurationAttribute.setInsert(this.isInsertMemberships());
3319 }
3320
3321 if (grouperProvisioningConfigurationAttribute.isMultiValued()) {
3322 this.entityAttributesMultivalued.add(targetEntityAttributeName);
3323 }
3324
3325 }
3326
3327 this.recalculateAllOperations = GrouperUtil.booleanValue(this.retrieveConfigBoolean("recalculateAllOperations", false), false);
3328
3329 if (this.recalculateAllOperations) {
3330 this.onlyAddMembershipsIfUserExistsInTarget = GrouperUtil.booleanValue(this.retrieveConfigBoolean("onlyAddMembershipsIfUserExistsInTarget", false), false);
3331 }
3332
3333 this.readOnly = GrouperUtil.booleanValue(this.retrieveConfigBoolean("readOnly", false), false);
3334
3335 this.runLogicInIncrementalDaemon = GrouperUtil.booleanValue(this.retrieveConfigBoolean("runLogicInIncrementalDaemon", false), true);
3336 this.runLogicInFullDaemon = GrouperUtil.booleanValue(this.retrieveConfigBoolean("runLogicInFullDaemon", false), true);
3337
3338 {
3339 String grouperProvisioningMembershipFieldTypeString = this.retrieveConfigString("membershipFields", false);
3340 if (StringUtils.isBlank(grouperProvisioningMembershipFieldTypeString) || StringUtils.equalsIgnoreCase("members", grouperProvisioningMembershipFieldTypeString)) {
3341 this.grouperProvisioningMembershipFieldType = GrouperProvisioningMembershipFieldType.members;
3342 } else if (StringUtils.equals("admin", grouperProvisioningMembershipFieldTypeString)) {
3343 this.grouperProvisioningMembershipFieldType = GrouperProvisioningMembershipFieldType.admin;
3344 } else if (StringUtils.equals("read,admin", grouperProvisioningMembershipFieldTypeString)) {
3345 this.grouperProvisioningMembershipFieldType = GrouperProvisioningMembershipFieldType.readAdmin;
3346 } else if (StringUtils.equals("update,admin", grouperProvisioningMembershipFieldTypeString)) {
3347 this.grouperProvisioningMembershipFieldType = GrouperProvisioningMembershipFieldType.updateAdmin;
3348 } else {
3349 throw new RuntimeException("Invalid GrouperProvisioningMembershipFieldType: '" + grouperProvisioningMembershipFieldTypeString + "'");
3350 }
3351 }
3352
3353 for (String configItem : new String[] {"grouperToTargetTranslationMembership", "grouperToTargetTranslationEntity",
3354 "grouperToTargetTranslationGroup", "grouperToTargetTranslationGroupCreateOnly"}) {
3355 String key = GrouperUtil.stripPrefix(configItem, "grouperToTargetTranslation");
3356 for (int i=0; i<= 1000; i++) {
3357
3358 String script = this.retrieveConfigString(configItem + "."+i+".script" , false);
3359 if (StringUtils.isBlank(script)) {
3360 break;
3361 }
3362 List<String> scripts = this.grouperProvisioningToTargetTranslation.get(key);
3363 if (scripts == null) {
3364 scripts = new ArrayList<String>();
3365 this.grouperProvisioningToTargetTranslation.put(key, scripts);
3366 }
3367 scripts.add(script);
3368
3369 }
3370
3371 }
3372
3373 this.subjectIdentifierForMemberSyncTable = this.retrieveConfigString("subjectIdentifierForMemberSyncTable", false);
3374
3375
3376 this.diagnosticsGroupsAllSelect = this.retrieveConfigBoolean("selectAllGroupsDuringDiagnostics", false);
3377 this.diagnosticsEntitiesAllSelect = this.retrieveConfigBoolean("selectAllEntitiesDuringDiagnostics", false);
3378 this.diagnosticsMembershipsAllSelect = this.retrieveConfigBoolean("selectAllMembershipsDuringDiagnostics", false);
3379 this.diagnosticsGroupName = this.retrieveConfigString("testGroupName", false);
3380 this.diagnosticsSubjectIdOrIdentifier = this.retrieveConfigString("testSubjectIdOrIdentifier", false);
3381 this.createGroupDuringDiagnostics = this.retrieveConfigBoolean("createGroupDuringDiagnostics", false);
3382 this.deleteGroupDuringDiagnostics = this.retrieveConfigBoolean("deleteGroupDuringDiagnostics", false);
3383 this.createEntityDuringDiagnostics = this.retrieveConfigBoolean("createEntityDuringDiagnostics", false);
3384 this.deleteEntityDuringDiagnostics = this.retrieveConfigBoolean("deleteEntityDuringDiagnostics", false);
3385 this.createMembershipDuringDiagnostics = this.retrieveConfigBoolean("createMembershipDuringDiagnostics", false);
3386 this.deleteMembershipDuringDiagnostics = this.retrieveConfigBoolean("deleteMembershipDuringDiagnostics", false);
3387
3388
3389 this.getGrouperProvisioner().retrieveGrouperProvisioningObjectMetadata().appendMetadataItemsFromConfig(this.metadataNameToMetadataItem.values());
3390
3391 if (this.isSelectMemberships() || isInsertMemberships() || isDeleteMemberships()) {
3392
3393
3394
3395
3396
3397 for (String entityMapping : new String[] {"memberId", "subjectId", "subjectIdentifier0", "subjectIdentifier1", "subjectIdentifier2", "email", "loginid", "entityAttributeValueCache0", "entityAttributeValueCache1", "entityAttributeValueCache2", "entityAttributeValueCache3", "id", "idIndex"}) {
3398 for (String name: getTargetMembershipAttributeNameToConfig().keySet()) {
3399
3400 GrouperProvisioningConfigurationAttributeouperProvisioningConfigurationAttribute.html#GrouperProvisioningConfigurationAttribute">GrouperProvisioningConfigurationAttribute grouperProvisioningConfigurationAttribute = (GrouperProvisioningConfigurationAttribute) this.getTargetMembershipAttributeNameToConfig().get(name);
3401
3402 if (StringUtils.equals(entityMapping, grouperProvisioningConfigurationAttribute.getTranslateFromGrouperProvisioningEntityField())) {
3403 if (StringUtils.isBlank(membershipEntityMatchingIdAttribute)) {
3404 membershipEntityMatchingIdAttribute = name;
3405 }
3406 if (StringUtils.isBlank(membershipEntityMatchingIdGrouperAttribute)) {
3407 membershipEntityMatchingIdGrouperAttribute = entityMapping;
3408 }
3409 }
3410
3411 }
3412
3413 }
3414
3415
3416
3417
3418 for (String groupMapping : new String[] {"id", "idIndex", "idIndexString", "name", "displayName", "extension", "displayExtension", "groupAttributeValueCache0", "groupAttributeValueCache1", "groupAttributeValueCache2", "groupAttributeValueCache3"}) {
3419 for (String name: getTargetMembershipAttributeNameToConfig().keySet()) {
3420
3421 GrouperProvisioningConfigurationAttributeouperProvisioningConfigurationAttribute.html#GrouperProvisioningConfigurationAttribute">GrouperProvisioningConfigurationAttribute grouperProvisioningConfigurationAttribute = (GrouperProvisioningConfigurationAttribute) this.getTargetMembershipAttributeNameToConfig().get(name);
3422
3423 if (StringUtils.equals(groupMapping, grouperProvisioningConfigurationAttribute.getTranslateFromGrouperProvisioningGroupField())) {
3424 if (StringUtils.isBlank(membershipGroupMatchingIdAttribute)) {
3425 membershipGroupMatchingIdAttribute = name;
3426 }
3427 if (StringUtils.isBlank(membershipGroupMatchingIdGrouperAttribute)) {
3428 membershipGroupMatchingIdGrouperAttribute = groupMapping;
3429 }
3430 }
3431
3432 }
3433
3434 }
3435 }
3436
3437
3438 assignAutoTranslatedGroupsConfiguration();
3439
3440 assignAutoTranslatedEntitiesConfiguration();
3441
3442 }
3443
3444 private boolean groupMatchingAttributeSameAsSearchAttribute;
3445
3446
3447
3448 public boolean isGroupMatchingAttributeSameAsSearchAttribute() {
3449 return groupMatchingAttributeSameAsSearchAttribute;
3450 }
3451
3452 private boolean entityMatchingAttributeSameAsSearchAttribute;
3453
3454
3455
3456 public boolean isEntityMatchingAttributeSameAsSearchAttribute() {
3457 return entityMatchingAttributeSameAsSearchAttribute;
3458 }
3459
3460 public boolean isGroupsRequireMembers() {
3461 return groupsRequireMembers;
3462 }
3463
3464 private boolean groupAttributeValueCacheHas;
3465
3466 public boolean isGroupAttributeValueCacheHas() {
3467 return groupAttributeValueCacheHas;
3468 }
3469
3470 private Boolean entityAttributeValueCacheHas;
3471
3472 public boolean isEntityAttributeValueCacheHas() {
3473 return entityAttributeValueCacheHas;
3474 }
3475
3476 private GrouperProvisioningConfigurationAttributeDbCacheAttributeDbCache.html#GrouperProvisioningConfigurationAttributeDbCache">GrouperProvisioningConfigurationAttributeDbCache[] groupAttributeDbCaches = new GrouperProvisioningConfigurationAttributeDbCache[4];
3477
3478 public GrouperProvisioningConfigurationAttributeDbCache[] getGroupAttributeDbCaches() {
3479 return groupAttributeDbCaches;
3480 }
3481
3482 private GrouperProvisioningConfigurationAttributeDbCachettributeDbCache.html#GrouperProvisioningConfigurationAttributeDbCache">GrouperProvisioningConfigurationAttributeDbCache[] entityAttributeDbCaches = new GrouperProvisioningConfigurationAttributeDbCache[4];
3483
3484 public GrouperProvisioningConfigurationAttributeDbCache[] getEntityAttributeDbCaches() {
3485 return entityAttributeDbCaches;
3486 }
3487
3488
3489 private void assignAutoTranslatedGroupsConfiguration() {
3490
3491 if (this.getGrouperProvisioner().retrieveGrouperProvisioningTranslator().isTranslateGrouperToTargetAutomatically()) {
3492
3493 if (this.targetGroupAttributeNameToConfig.size() == 0) {
3494
3495 GrouperProvisioningConfigurationAttributeationAttribute.html#GrouperProvisioningConfigurationAttribute">GrouperProvisioningConfigurationAttribute nameConfigurationAttribute = new GrouperProvisioningConfigurationAttribute();
3496 nameConfigurationAttribute.setGrouperProvisioner(grouperProvisioner);
3497 nameConfigurationAttribute.setUpdate(this.isUpdateGroups());
3498 nameConfigurationAttribute.setGrouperProvisioningConfigurationAttributeType(GrouperProvisioningConfigurationAttributeType.group);
3499 nameConfigurationAttribute.setInsert(this.isInsertGroups());
3500 nameConfigurationAttribute.setName("name");
3501 nameConfigurationAttribute.setSelect(this.isSelectGroups());
3502 nameConfigurationAttribute.setValueType(GrouperProvisioningConfigurationAttributeValueType.STRING);
3503 nameConfigurationAttribute.setTranslateFromGrouperProvisioningGroupField("name");
3504 this.targetGroupAttributeNameToConfig.put("name", nameConfigurationAttribute);
3505
3506 GrouperProvisioningConfigurationAttributetribute.html#GrouperProvisioningConfigurationAttribute">GrouperProvisioningConfigurationAttribute displayNameConfigurationAttribute = new GrouperProvisioningConfigurationAttribute();
3507 displayNameConfigurationAttribute.setGrouperProvisioner(grouperProvisioner);
3508 displayNameConfigurationAttribute.setUpdate(this.isUpdateGroups());
3509 displayNameConfigurationAttribute.setGrouperProvisioningConfigurationAttributeType(GrouperProvisioningConfigurationAttributeType.group);
3510 displayNameConfigurationAttribute.setInsert(this.isInsertGroups());
3511 displayNameConfigurationAttribute.setName("displayName");
3512 displayNameConfigurationAttribute.setSelect(this.isSelectGroups());
3513 displayNameConfigurationAttribute.setValueType(GrouperProvisioningConfigurationAttributeValueType.STRING);
3514 displayNameConfigurationAttribute.setTranslateFromGrouperProvisioningGroupField("displayName");
3515 this.targetGroupAttributeNameToConfig.put("displayName", displayNameConfigurationAttribute);
3516
3517 GrouperProvisioningConfigurationAttributeonAttribute.html#GrouperProvisioningConfigurationAttribute">GrouperProvisioningConfigurationAttribute idIndexConfigurationAttribute = new GrouperProvisioningConfigurationAttribute();
3518 idIndexConfigurationAttribute.setGrouperProvisioner(grouperProvisioner);
3519 idIndexConfigurationAttribute.setUpdate(this.isUpdateGroups());
3520 idIndexConfigurationAttribute.setGrouperProvisioningConfigurationAttributeType(GrouperProvisioningConfigurationAttributeType.group);
3521 idIndexConfigurationAttribute.setInsert(this.isInsertGroups());
3522 idIndexConfigurationAttribute.setName("idIndex");
3523 idIndexConfigurationAttribute.setSelect(this.isSelectGroups());
3524 idIndexConfigurationAttribute.setValueType(GrouperProvisioningConfigurationAttributeValueType.STRING);
3525 idIndexConfigurationAttribute.setTranslateFromGrouperProvisioningGroupField("idIndex");
3526 this.targetGroupAttributeNameToConfig.put("idIndex", idIndexConfigurationAttribute);
3527
3528
3529 GrouperProvisioningConfigurationAttributetribute.html#GrouperProvisioningConfigurationAttribute">GrouperProvisioningConfigurationAttribute descriptionConfigurationAttribute = new GrouperProvisioningConfigurationAttribute();
3530 descriptionConfigurationAttribute.setGrouperProvisioner(grouperProvisioner);
3531 descriptionConfigurationAttribute.setUpdate(this.isUpdateGroups());
3532 descriptionConfigurationAttribute.setGrouperProvisioningConfigurationAttributeType(GrouperProvisioningConfigurationAttributeType.group);
3533 descriptionConfigurationAttribute.setInsert(this.isInsertGroups());
3534 descriptionConfigurationAttribute.setName("description");
3535 descriptionConfigurationAttribute.setSelect(this.isSelectGroups());
3536 descriptionConfigurationAttribute.setValueType(GrouperProvisioningConfigurationAttributeValueType.STRING);
3537 descriptionConfigurationAttribute.setTranslateFromGrouperProvisioningGroupField("description");
3538 this.targetGroupAttributeNameToConfig.put("description", descriptionConfigurationAttribute);
3539
3540 }
3541
3542 }
3543 }
3544
3545 private void assignAutoTranslatedEntitiesConfiguration() {
3546
3547 if (this.getGrouperProvisioner().retrieveGrouperProvisioningTranslator().isTranslateGrouperToTargetAutomatically()) {
3548
3549 if (this.targetEntityAttributeNameToConfig.size() == 0) {
3550
3551 GrouperProvisioningConfigurationAttributeurationAttribute.html#GrouperProvisioningConfigurationAttribute">GrouperProvisioningConfigurationAttribute idConfigurationAttribute = new GrouperProvisioningConfigurationAttribute();
3552 idConfigurationAttribute.setGrouperProvisioner(grouperProvisioner);
3553 idConfigurationAttribute.setUpdate(this.isUpdateEntities());
3554 idConfigurationAttribute.setGrouperProvisioningConfigurationAttributeType(GrouperProvisioningConfigurationAttributeType.entity);
3555 idConfigurationAttribute.setInsert(this.isInsertEntities());
3556 idConfigurationAttribute.setName("id");
3557 idConfigurationAttribute.setSelect(this.isSelectEntities());
3558 idConfigurationAttribute.setValueType(GrouperProvisioningConfigurationAttributeValueType.STRING);
3559 idConfigurationAttribute.setTranslateFromGrouperProvisioningEntityField("id");
3560 this.targetEntityAttributeNameToConfig.put("id", idConfigurationAttribute);
3561
3562 GrouperProvisioningConfigurationAttributeationAttribute.html#GrouperProvisioningConfigurationAttribute">GrouperProvisioningConfigurationAttribute nameConfigurationAttribute = new GrouperProvisioningConfigurationAttribute();
3563 nameConfigurationAttribute.setGrouperProvisioner(grouperProvisioner);
3564 nameConfigurationAttribute.setUpdate(this.isUpdateEntities());
3565 nameConfigurationAttribute.setGrouperProvisioningConfigurationAttributeType(GrouperProvisioningConfigurationAttributeType.entity);
3566 nameConfigurationAttribute.setInsert(this.isInsertEntities());
3567 nameConfigurationAttribute.setName("name");
3568 nameConfigurationAttribute.setSelect(this.isSelectEntities());
3569 nameConfigurationAttribute.setValueType(GrouperProvisioningConfigurationAttributeValueType.STRING);
3570 nameConfigurationAttribute.setTranslateFromGrouperProvisioningEntityField("name");
3571 this.targetEntityAttributeNameToConfig.put("name", nameConfigurationAttribute);
3572
3573 GrouperProvisioningConfigurationAttributeAttribute.html#GrouperProvisioningConfigurationAttribute">GrouperProvisioningConfigurationAttribute subjectIdConfigurationAttribute = new GrouperProvisioningConfigurationAttribute();
3574 subjectIdConfigurationAttribute.setGrouperProvisioner(grouperProvisioner);
3575 subjectIdConfigurationAttribute.setUpdate(this.isUpdateEntities());
3576 subjectIdConfigurationAttribute.setGrouperProvisioningConfigurationAttributeType(GrouperProvisioningConfigurationAttributeType.entity);
3577 subjectIdConfigurationAttribute.setInsert(this.isInsertEntities());
3578 subjectIdConfigurationAttribute.setName("subjectId");
3579 subjectIdConfigurationAttribute.setSelect(this.isSelectEntities());
3580 subjectIdConfigurationAttribute.setValueType(GrouperProvisioningConfigurationAttributeValueType.STRING);
3581 subjectIdConfigurationAttribute.setTranslateFromGrouperProvisioningEntityField("subjectId");
3582 this.targetEntityAttributeNameToConfig.put("subjectId", subjectIdConfigurationAttribute);
3583
3584 GrouperProvisioningConfigurationAttributetribute.html#GrouperProvisioningConfigurationAttribute">GrouperProvisioningConfigurationAttribute descriptionConfigurationAttribute = new GrouperProvisioningConfigurationAttribute();
3585 descriptionConfigurationAttribute.setGrouperProvisioner(grouperProvisioner);
3586 descriptionConfigurationAttribute.setUpdate(this.isUpdateEntities());
3587 descriptionConfigurationAttribute.setGrouperProvisioningConfigurationAttributeType(GrouperProvisioningConfigurationAttributeType.entity);
3588 descriptionConfigurationAttribute.setInsert(this.isInsertEntities());
3589 descriptionConfigurationAttribute.setName("description");
3590 descriptionConfigurationAttribute.setSelect(this.isSelectEntities());
3591 descriptionConfigurationAttribute.setValueType(GrouperProvisioningConfigurationAttributeValueType.STRING);
3592 descriptionConfigurationAttribute.setTranslateFromGrouperProvisioningEntityField("description");
3593 this.targetEntityAttributeNameToConfig.put("description", descriptionConfigurationAttribute);
3594
3595 GrouperProvisioningConfigurationAttributeute.html#GrouperProvisioningConfigurationAttribute">GrouperProvisioningConfigurationAttribute subjectSourceIdConfigurationAttribute = new GrouperProvisioningConfigurationAttribute();
3596 subjectSourceIdConfigurationAttribute.setGrouperProvisioner(grouperProvisioner);
3597 subjectSourceIdConfigurationAttribute.setUpdate(this.isUpdateEntities());
3598 subjectSourceIdConfigurationAttribute.setGrouperProvisioningConfigurationAttributeType(GrouperProvisioningConfigurationAttributeType.entity);
3599 subjectSourceIdConfigurationAttribute.setInsert(this.isInsertEntities());
3600 subjectSourceIdConfigurationAttribute.setName("subjectSourceId");
3601 subjectSourceIdConfigurationAttribute.setSelect(this.isSelectEntities());
3602 subjectSourceIdConfigurationAttribute.setValueType(GrouperProvisioningConfigurationAttributeValueType.STRING);
3603 subjectSourceIdConfigurationAttribute.setTranslateFromGrouperProvisioningEntityField("subjectSourceId");
3604 this.targetEntityAttributeNameToConfig.put("subjectSourceId", subjectSourceIdConfigurationAttribute);
3605
3606 GrouperProvisioningConfigurationAttributee.html#GrouperProvisioningConfigurationAttribute">GrouperProvisioningConfigurationAttribute subjectIdetifier0ConfigurationAttribute = new GrouperProvisioningConfigurationAttribute();
3607 subjectIdetifier0ConfigurationAttribute.setGrouperProvisioner(grouperProvisioner);
3608 subjectIdetifier0ConfigurationAttribute.setUpdate(this.isUpdateEntities());
3609 subjectIdetifier0ConfigurationAttribute.setGrouperProvisioningConfigurationAttributeType(GrouperProvisioningConfigurationAttributeType.entity);
3610 subjectIdetifier0ConfigurationAttribute.setInsert(this.isInsertEntities());
3611 subjectIdetifier0ConfigurationAttribute.setName("subjectIdentifier0");
3612 subjectIdetifier0ConfigurationAttribute.setSelect(this.isSelectEntities());
3613 subjectIdetifier0ConfigurationAttribute.setValueType(GrouperProvisioningConfigurationAttributeValueType.STRING);
3614 subjectIdetifier0ConfigurationAttribute.setTranslateFromGrouperProvisioningEntityField("subjectIdentifier0");
3615 this.targetEntityAttributeNameToConfig.put("subjectIdentifier0", subjectIdetifier0ConfigurationAttribute);
3616
3617 GrouperProvisioningConfigurationAttributee.html#GrouperProvisioningConfigurationAttribute">GrouperProvisioningConfigurationAttribute subjectIdetifier1ConfigurationAttribute = new GrouperProvisioningConfigurationAttribute();
3618 subjectIdetifier1ConfigurationAttribute.setGrouperProvisioner(grouperProvisioner);
3619 subjectIdetifier1ConfigurationAttribute.setUpdate(this.isUpdateEntities());
3620 subjectIdetifier1ConfigurationAttribute.setGrouperProvisioningConfigurationAttributeType(GrouperProvisioningConfigurationAttributeType.entity);
3621 subjectIdetifier1ConfigurationAttribute.setInsert(this.isInsertEntities());
3622 subjectIdetifier1ConfigurationAttribute.setName("subjectIdentifier1");
3623 subjectIdetifier1ConfigurationAttribute.setSelect(this.isSelectEntities());
3624 subjectIdetifier1ConfigurationAttribute.setValueType(GrouperProvisioningConfigurationAttributeValueType.STRING);
3625 subjectIdetifier1ConfigurationAttribute.setTranslateFromGrouperProvisioningEntityField("subjectIdentifier1");
3626 this.targetEntityAttributeNameToConfig.put("subjectIdentifier1", subjectIdetifier1ConfigurationAttribute);
3627
3628 GrouperProvisioningConfigurationAttributee.html#GrouperProvisioningConfigurationAttribute">GrouperProvisioningConfigurationAttribute subjectIdetifier2ConfigurationAttribute = new GrouperProvisioningConfigurationAttribute();
3629 subjectIdetifier2ConfigurationAttribute.setGrouperProvisioner(grouperProvisioner);
3630 subjectIdetifier2ConfigurationAttribute.setUpdate(this.isUpdateEntities());
3631 subjectIdetifier2ConfigurationAttribute.setGrouperProvisioningConfigurationAttributeType(GrouperProvisioningConfigurationAttributeType.entity);
3632 subjectIdetifier2ConfigurationAttribute.setInsert(this.isInsertEntities());
3633 subjectIdetifier2ConfigurationAttribute.setName("subjectIdentifier2");
3634 subjectIdetifier2ConfigurationAttribute.setSelect(this.isSelectEntities());
3635 subjectIdetifier2ConfigurationAttribute.setValueType(GrouperProvisioningConfigurationAttributeValueType.STRING);
3636 subjectIdetifier2ConfigurationAttribute.setTranslateFromGrouperProvisioningEntityField("subjectIdentifier2");
3637 this.targetEntityAttributeNameToConfig.put("subjectIdentifier2", subjectIdetifier2ConfigurationAttribute);
3638
3639 GrouperProvisioningConfigurationAttributeonAttribute.html#GrouperProvisioningConfigurationAttribute">GrouperProvisioningConfigurationAttribute idIndexConfigurationAttribute = new GrouperProvisioningConfigurationAttribute();
3640 idIndexConfigurationAttribute.setGrouperProvisioner(grouperProvisioner);
3641 idIndexConfigurationAttribute.setUpdate(this.isUpdateEntities());
3642 idIndexConfigurationAttribute.setGrouperProvisioningConfigurationAttributeType(GrouperProvisioningConfigurationAttributeType.entity);
3643 idIndexConfigurationAttribute.setInsert(this.isInsertEntities());
3644 idIndexConfigurationAttribute.setName("idIndex");
3645 idIndexConfigurationAttribute.setSelect(this.isSelectEntities());
3646 idIndexConfigurationAttribute.setValueType(GrouperProvisioningConfigurationAttributeValueType.STRING);
3647 idIndexConfigurationAttribute.setTranslateFromGrouperProvisioningEntityField("idIndex");
3648 this.targetEntityAttributeNameToConfig.put("idIndex", idIndexConfigurationAttribute);
3649 }
3650
3651 }
3652 }
3653
3654
3655
3656
3657 private boolean operateOnGrouperEntities;
3658
3659
3660
3661
3662 private boolean operateOnGrouperMemberships;
3663
3664
3665
3666
3667 private boolean operateOnGrouperGroups;
3668
3669
3670
3671
3672
3673 public boolean isOperateOnGrouperEntities() {
3674 return operateOnGrouperEntities;
3675 }
3676
3677
3678
3679
3680
3681 public boolean isOperateOnGrouperMemberships() {
3682 return operateOnGrouperMemberships;
3683 }
3684
3685
3686 public boolean isOperateOnGrouperGroups() {
3687 return operateOnGrouperGroups;
3688 }
3689
3690 public boolean isRecalculateAllOperations() {
3691 return recalculateAllOperations;
3692 }
3693
3694
3695 public void setRecalculateAllOperations(boolean recalculateAllOperations) {
3696 this.recalculateAllOperations = recalculateAllOperations;
3697 }
3698
3699
3700
3701
3702 private boolean configured = false;
3703
3704
3705
3706
3707 private Map<String, GrouperProvisioningConfigurationAttribute> targetEntityAttributeNameToConfig = new LinkedHashMap<String, GrouperProvisioningConfigurationAttribute>();
3708
3709
3710
3711
3712 private Map<String, GrouperProvisioningConfigurationAttribute> targetMembershipAttributeNameToConfig = new LinkedHashMap<String, GrouperProvisioningConfigurationAttribute>();
3713
3714
3715
3716
3717 protected String membershipEntityMatchingIdGrouperAttribute;
3718
3719
3720
3721
3722 protected String membershipEntityMatchingIdAttribute;
3723
3724
3725 public void setMembershipEntityMatchingIdGrouperAttribute(
3726 String membershipEntityMatchingIdGrouperAttribute) {
3727 this.membershipEntityMatchingIdGrouperAttribute = membershipEntityMatchingIdGrouperAttribute;
3728 }
3729
3730
3731 public void setMembershipEntityMatchingIdAttribute(
3732 String membershipEntityMatchingIdAttribute) {
3733 this.membershipEntityMatchingIdAttribute = membershipEntityMatchingIdAttribute;
3734 }
3735
3736
3737 public void setMembershipGroupMatchingIdAttribute(
3738 String membershipGroupMatchingIdAttribute) {
3739 this.membershipGroupMatchingIdAttribute = membershipGroupMatchingIdAttribute;
3740 }
3741
3742
3743 public void setMembershipGroupMatchingIdGrouperAttribute(
3744 String membershipGroupMatchingIdGrouperAttribute) {
3745 this.membershipGroupMatchingIdGrouperAttribute = membershipGroupMatchingIdGrouperAttribute;
3746 }
3747
3748
3749
3750
3751 protected String membershipGroupMatchingIdAttribute;
3752
3753
3754
3755
3756 protected String membershipGroupMatchingIdGrouperAttribute;
3757
3758
3759
3760
3761
3762
3763 public String getMembershipEntityMatchingIdGrouperAttribute() {
3764 return membershipEntityMatchingIdGrouperAttribute;
3765 }
3766
3767
3768
3769
3770
3771 public String getMembershipGroupMatchingIdGrouperAttribute() {
3772 return membershipGroupMatchingIdGrouperAttribute;
3773 }
3774
3775 public Map<String, GrouperProvisioningConfigurationAttribute> getTargetMembershipAttributeNameToConfig() {
3776 return targetMembershipAttributeNameToConfig;
3777 }
3778
3779
3780 public Map<String, GrouperProvisioningConfigurationAttribute> getTargetEntityAttributeNameToConfig() {
3781 return targetEntityAttributeNameToConfig;
3782 }
3783
3784
3785
3786
3787
3788
3789 public void configureProvisioner() {
3790
3791 if (this.configured) {
3792 return;
3793 }
3794 try {
3795
3796 this.preConfigure();
3797
3798 this.configureGenericSettings();
3799
3800 this.configureSpecificSettings();
3801
3802 } catch (RuntimeException re) {
3803 if (this.grouperProvisioner != null && this.grouperProvisioner.getGcGrouperSyncLog() != null) {
3804 try {
3805 this.grouperProvisioner.getGcGrouperSyncLog().setStatus(GcGrouperSyncLogState.CONFIG_ERROR);
3806 this.grouperProvisioner.getGcGrouperSync().getGcGrouperSyncLogDao().internal_logStore(this.grouperProvisioner.getGcGrouperSyncLog());
3807 } catch (RuntimeException re2) {
3808 GrouperClientUtils.injectInException(re, "***** START ANOTHER EXCEPTON *******" + GrouperClientUtils.getFullStackTrace(re2) + "***** END ANOTHER EXCEPTON *******");
3809 }
3810 }
3811 throw re;
3812 }
3813
3814 this.configured = true;
3815 }
3816
3817
3818
3819 public boolean isConfigured() {
3820 return configured;
3821 }
3822
3823
3824
3825 public Map<String, Object> getDebugMap() {
3826 return debugMap;
3827 }
3828
3829
3830 public void setDebugMap(Map<String, Object> debugMap) {
3831 this.debugMap = debugMap;
3832 }
3833
3834
3835
3836 public boolean isHasTargetGroupLink() {
3837 return hasTargetGroupLink;
3838 }
3839
3840
3841 public void setHasTargetGroupLink(boolean hasTargetGroupLink) {
3842 this.hasTargetGroupLink = hasTargetGroupLink;
3843 }
3844
3845
3846 public boolean isHasTargetEntityLink() {
3847 return hasTargetEntityLink;
3848 }
3849
3850
3851 public void setHasTargetEntityLink(boolean hasTargetEntityLink) {
3852 this.hasTargetEntityLink = hasTargetEntityLink;
3853 }
3854
3855 public Set<String> getSubjectSourcesToProvision() {
3856 return subjectSourcesToProvision;
3857 }
3858
3859
3860 public void setSubjectSourcesToProvision(Set<String> subjectSourcesToProvision) {
3861 this.subjectSourcesToProvision = subjectSourcesToProvision;
3862 }
3863
3864 public List<GrouperProvisioningConfigurationAttribute> getEntitySearchAttributes() {
3865 return entitySearchAttributes;
3866 }
3867
3868
3869 public void setEntitySearchAttributes(List<GrouperProvisioningConfigurationAttribute> userSearchAttributes ) {
3870 this.entitySearchAttributes = userSearchAttributes;
3871 }
3872
3873
3874 public List<GrouperProvisioningConfigurationAttribute> getGroupSearchAttributes() {
3875 return groupSearchAttributes;
3876 }
3877
3878 public void setGroupSearchAttributes(List<GrouperProvisioningConfigurationAttribute> groupSearchAttributes) {
3879 this.groupSearchAttributes = groupSearchAttributes;
3880 }
3881
3882
3883 public Set<String> getEntityAttributesMultivalued() {
3884 return entityAttributesMultivalued;
3885 }
3886
3887
3888 public void setEntityAttributesMultivalued(Set<String> userAttributesMultivalued) {
3889 this.entityAttributesMultivalued = userAttributesMultivalued;
3890 }
3891
3892
3893 public Set<String> getGroupAttributesMultivalued() {
3894 return groupAttributesMultivalued;
3895 }
3896
3897
3898 public void setGroupAttributesMultivalued(Set<String> groupAttributesMultivalued) {
3899 this.groupAttributesMultivalued = groupAttributesMultivalued;
3900 }
3901
3902 public boolean isInsertEntities() {
3903 return insertEntities;
3904 }
3905
3906
3907 public void setInsertEntities(boolean insertEntities) {
3908 this.insertEntities = insertEntities;
3909 }
3910
3911
3912 public boolean isInsertGroups() {
3913 return insertGroups;
3914 }
3915
3916
3917 public void setInsertGroups(boolean insertGroups) {
3918 this.insertGroups = insertGroups;
3919 }
3920
3921
3922
3923 public boolean isDeleteGroupsIfNotExistInGrouper() {
3924 return deleteGroupsIfNotExistInGrouper;
3925 }
3926
3927
3928 public void setDeleteGroupsIfNotExistInGrouper(boolean deleteGroupsIfNotExistInGrouper) {
3929 this.deleteGroupsIfNotExistInGrouper = deleteGroupsIfNotExistInGrouper;
3930 }
3931
3932
3933 public boolean isDeleteGroupsIfGrouperDeleted() {
3934 return deleteGroupsIfGrouperDeleted;
3935 }
3936
3937
3938 public void setDeleteGroupsIfGrouperDeleted(boolean deleteGroupsIfGrouperDeleted) {
3939 this.deleteGroupsIfGrouperDeleted = deleteGroupsIfGrouperDeleted;
3940 }
3941
3942 public GrouperProvisioningMembershipFieldType getGrouperProvisioningMembershipFieldType() {
3943 return grouperProvisioningMembershipFieldType;
3944 }
3945
3946
3947 public void setGrouperProvisioningMembershipFieldType(
3948 GrouperProvisioningMembershipFieldType grouperProvisioningMembershipFieldType) {
3949 this.grouperProvisioningMembershipFieldType = grouperProvisioningMembershipFieldType;
3950 }
3951
3952
3953 public String getEntityAttributesLdapSubjectSource() {
3954 return entityAttributesLdapSubjectSource;
3955 }
3956
3957 public int getDaoSleepBeforeSelectAfterInsertMillis() {
3958 return sleepBeforeSelectAfterInsertMillis;
3959 }
3960
3961
3962
3963
3964 public void configureAfterMetadata() {
3965 }
3966
3967
3968 public Boolean getCreateGroupDuringDiagnostics() {
3969 return createGroupDuringDiagnostics;
3970 }
3971
3972
3973 public void setCreateGroupDuringDiagnostics(Boolean createGroupDuringDiagnostics) {
3974 this.createGroupDuringDiagnostics = createGroupDuringDiagnostics;
3975 }
3976
3977
3978 public Boolean getDeleteGroupDuringDiagnostics() {
3979 return deleteGroupDuringDiagnostics;
3980 }
3981
3982
3983 public void setDeleteGroupDuringDiagnostics(Boolean deleteGroupDuringDiagnostics) {
3984 this.deleteGroupDuringDiagnostics = deleteGroupDuringDiagnostics;
3985 }
3986
3987
3988 public Boolean getCreateEntityDuringDiagnostics() {
3989 return createEntityDuringDiagnostics;
3990 }
3991
3992
3993 public void setCreateEntityDuringDiagnostics(Boolean createEntityDuringDiagnostics) {
3994 this.createEntityDuringDiagnostics = createEntityDuringDiagnostics;
3995 }
3996
3997
3998 public Boolean getDeleteEntityDuringDiagnostics() {
3999 return deleteEntityDuringDiagnostics;
4000 }
4001
4002
4003 public void setDeleteEntityDuringDiagnostics(Boolean deleteEntityDuringDiagnostics) {
4004 this.deleteEntityDuringDiagnostics = deleteEntityDuringDiagnostics;
4005 }
4006
4007
4008 public Boolean getDiagnosticsGroupsAllSelect() {
4009 return diagnosticsGroupsAllSelect;
4010 }
4011
4012
4013 public void setDiagnosticsGroupsAllSelect(Boolean diagnosticsGroupsAllSelect) {
4014 this.diagnosticsGroupsAllSelect = diagnosticsGroupsAllSelect;
4015 }
4016
4017
4018 public Boolean getDiagnosticsEntitiesAllSelect() {
4019 return diagnosticsEntitiesAllSelect;
4020 }
4021
4022
4023 public void setDiagnosticsEntitiesAllSelect(Boolean diagnosticsEntitiesAllSelect) {
4024 this.diagnosticsEntitiesAllSelect = diagnosticsEntitiesAllSelect;
4025 }
4026
4027
4028 public Boolean getDiagnosticsMembershipsAllSelect() {
4029 return diagnosticsMembershipsAllSelect;
4030 }
4031
4032
4033 public void setDiagnosticsMembershipsAllSelect(Boolean diagnosticsMembershipsAllSelect) {
4034 this.diagnosticsMembershipsAllSelect = diagnosticsMembershipsAllSelect;
4035 }
4036
4037
4038 public Boolean getOnlyProvisionPolicyGroups() {
4039 return onlyProvisionPolicyGroups;
4040 }
4041
4042
4043 public void setOnlyProvisionPolicyGroups(Boolean onlyProvisionPolicyGroups) {
4044 this.onlyProvisionPolicyGroups = onlyProvisionPolicyGroups;
4045 }
4046
4047
4048 public Boolean getAllowPolicyGroupOverride() {
4049 return allowPolicyGroupOverride;
4050 }
4051
4052
4053 public void setAllowPolicyGroupOverride(Boolean allowPolicyGroupOverride) {
4054 this.allowPolicyGroupOverride = allowPolicyGroupOverride;
4055 }
4056
4057
4058 public Boolean getAllowProvisionableRegexOverride() {
4059 return allowProvisionableRegexOverride;
4060 }
4061
4062
4063 public void setAllowProvisionableRegexOverride(Boolean allowProvisionableRegexOverride) {
4064 this.allowProvisionableRegexOverride = allowProvisionableRegexOverride;
4065 }
4066
4067
4068 public Boolean getEntityAttributeValueCacheHas() {
4069 return entityAttributeValueCacheHas;
4070 }
4071
4072
4073 public void setEntityAttributeValueCacheHas(Boolean entityAttributeValueCacheHas) {
4074 this.entityAttributeValueCacheHas = entityAttributeValueCacheHas;
4075 }
4076
4077
4078 public void setThreadPoolSize(int threadPoolSize) {
4079 this.threadPoolSize = threadPoolSize;
4080 }
4081
4082
4083 public void setSubjectIdentifierForMemberSyncTable(
4084 String subjectIdentifierForMemberSyncTable) {
4085 this.subjectIdentifierForMemberSyncTable = subjectIdentifierForMemberSyncTable;
4086 }
4087
4088
4089 public void setGroupsRequireMembers(boolean groupsRequireMembers) {
4090 this.groupsRequireMembers = groupsRequireMembers;
4091 }
4092
4093
4094 public void setHasEntityAttributes(boolean hasEntityAttributes) {
4095 this.hasEntityAttributes = hasEntityAttributes;
4096 }
4097
4098
4099 public void setResolveAttributesWithSql(boolean resolveAttributesWithSql) {
4100 this.resolveAttributesWithSql = resolveAttributesWithSql;
4101 }
4102
4103
4104 public void setResolveAttributesWithLdap(boolean resolveAttributesWithLdap) {
4105 this.resolveAttributesWithLdap = resolveAttributesWithLdap;
4106 }
4107
4108
4109 public void setUseGlobalSqlResolver(boolean useGlobalSqlResolver) {
4110 this.useGlobalSqlResolver = useGlobalSqlResolver;
4111 }
4112
4113
4114 public void setUseGlobalLdapResolver(boolean useGlobalLdapResolver) {
4115 this.useGlobalLdapResolver = useGlobalLdapResolver;
4116 }
4117
4118
4119 public void setGlobalSqlResolver(String globalSqlResolver) {
4120 this.globalSqlResolver = globalSqlResolver;
4121 }
4122
4123
4124 public void setGlobalLdapResolver(String globalLdapResolver) {
4125 this.globalLdapResolver = globalLdapResolver;
4126 }
4127
4128
4129 public void setSelectAllSqlOnFull(boolean selectAllSqlOnFull) {
4130 this.selectAllSqlOnFull = selectAllSqlOnFull;
4131 }
4132
4133
4134 public void setFilterAllLDAPOnFull(boolean filterAllLDAPOnFull) {
4135 this.filterAllLDAPOnFull = filterAllLDAPOnFull;
4136 }
4137
4138
4139 public void setLoadEntitiesToGrouperTable(boolean loadEntitiesToGrouperTable) {
4140 this.loadEntitiesToGrouperTable = loadEntitiesToGrouperTable;
4141 }
4142
4143
4144 public void setEntityAttributesSqlExternalSystem(
4145 String entityAttributesSqlExternalSystem) {
4146 this.entityAttributesSqlExternalSystem = entityAttributesSqlExternalSystem;
4147 }
4148
4149
4150 public void setEntityAttributesTableViewName(String entityAttributesTableViewName) {
4151 this.entityAttributesTableViewName = entityAttributesTableViewName;
4152 }
4153
4154
4155 public void setEntityAttributesColumnNames(String entityAttributesColumnNames) {
4156 this.entityAttributesColumnNames = entityAttributesColumnNames;
4157 }
4158
4159
4160 public void setEntityAttributesSubjectSourceIdColumn(
4161 String entityAttributesSubjectSourceIdColumn) {
4162 this.entityAttributesSubjectSourceIdColumn = entityAttributesSubjectSourceIdColumn;
4163 }
4164
4165
4166 public void setEntityAttributesSubjectSearchMatchingColumn(
4167 String entityAttributesSubjectSearchMatchingColumn) {
4168 this.entityAttributesSubjectSearchMatchingColumn = entityAttributesSubjectSearchMatchingColumn;
4169 }
4170
4171
4172 public void setEntityAttributesSqlMappingType(String entityAttributesSqlMappingType) {
4173 this.entityAttributesSqlMappingType = entityAttributesSqlMappingType;
4174 }
4175
4176
4177 public void setEntityAttributesSqlMappingEntityAttribute(
4178 String entityAttributesSqlMappingEntityAttribute) {
4179 this.entityAttributesSqlMappingEntityAttribute = entityAttributesSqlMappingEntityAttribute;
4180 }
4181
4182
4183 public void setEntityAttributesSqlMappingExpression(
4184 String entityAttributesSqlMappingExpression) {
4185 this.entityAttributesSqlMappingExpression = entityAttributesSqlMappingExpression;
4186 }
4187
4188
4189 public void setEntityAttributesLastUpdatedColumn(
4190 String entityAttributesLastUpdatedColumn) {
4191 this.entityAttributesLastUpdatedColumn = entityAttributesLastUpdatedColumn;
4192 }
4193
4194
4195 public void setEntityAttributesLastUpdatedType(String entityAttributesLastUpdatedType) {
4196 this.entityAttributesLastUpdatedType = entityAttributesLastUpdatedType;
4197 }
4198
4199
4200 public void setEntityAttributesLdapExternalSystem(
4201 String entityAttributesLdapExternalSystem) {
4202 this.entityAttributesLdapExternalSystem = entityAttributesLdapExternalSystem;
4203 }
4204
4205
4206 public void setEntityAttributesLdapBaseDn(String entityAttributesLdapBaseDn) {
4207 this.entityAttributesLdapBaseDn = entityAttributesLdapBaseDn;
4208 }
4209
4210
4211 public void setEntityAttributesLdapSubjectSource(
4212 String entityAttributesLdapSubjectSource) {
4213 this.entityAttributesLdapSubjectSource = entityAttributesLdapSubjectSource;
4214 }
4215
4216
4217 public void setEntityAttributesLdapSearchScope(String entityAttributesLdapSearchScope) {
4218 this.entityAttributesLdapSearchScope = entityAttributesLdapSearchScope;
4219 }
4220
4221
4222 public void setEntityAttributesLdapFilterPart(String entityAttributesLdapFilterPart) {
4223 this.entityAttributesLdapFilterPart = entityAttributesLdapFilterPart;
4224 }
4225
4226
4227 public void setEntityAttributesLdapAttributes(String entityAttributesLdapAttributes) {
4228 this.entityAttributesLdapAttributes = entityAttributesLdapAttributes;
4229 }
4230
4231
4232 public void setEntityAttributesLdapMutliValuedAttributes(
4233 String entityAttributesLdapMutliValuedAttributes) {
4234 this.entityAttributesLdapMutliValuedAttributes = entityAttributesLdapMutliValuedAttributes;
4235 }
4236
4237
4238 public void setEntityAttributesLdapMatchingSearchAttribute(
4239 String entityAttributesLdapMatchingSearchAttribute) {
4240 this.entityAttributesLdapMatchingSearchAttribute = entityAttributesLdapMatchingSearchAttribute;
4241 }
4242
4243
4244 public void setEntityAttributesLdapMappingType(String entityAttributesLdapMappingType) {
4245 this.entityAttributesLdapMappingType = entityAttributesLdapMappingType;
4246 }
4247
4248
4249 public void setEntityAttributesLdapMappingEntityAttribute(
4250 String entityAttributesLdapMappingEntityAttribute) {
4251 this.entityAttributesLdapMappingEntityAttribute = entityAttributesLdapMappingEntityAttribute;
4252 }
4253
4254
4255 public void setEntityAttributesLdapMatchingExpression(
4256 String entityAttributesLdapMatchingExpression) {
4257 this.entityAttributesLdapMatchingExpression = entityAttributesLdapMatchingExpression;
4258 }
4259
4260
4261 public void setEntityAttributesLdapLastUpdatedAttribute(
4262 String entityAttributesLdapLastUpdatedAttribute) {
4263 this.entityAttributesLdapLastUpdatedAttribute = entityAttributesLdapLastUpdatedAttribute;
4264 }
4265
4266
4267 public void setEntityAttributesLdapLastUpdatedAttributeFormat(
4268 String entityAttributesLdapLastUpdatedAttributeFormat) {
4269 this.entityAttributesLdapLastUpdatedAttributeFormat = entityAttributesLdapLastUpdatedAttributeFormat;
4270 }
4271
4272
4273 public void setGroupIdOfUsersToProvision(String groupIdOfUsersToProvision) {
4274 this.groupIdOfUsersToProvision = groupIdOfUsersToProvision;
4275 }
4276
4277
4278 public void setDiagnosticsGroupName(String diagnosticsGroupName) {
4279 this.diagnosticsGroupName = diagnosticsGroupName;
4280 }
4281
4282
4283 public void setDiagnosticsSubjectIdOrIdentifier(String diagnosticsSubjectIdOrIdentifier) {
4284 this.diagnosticsSubjectIdOrIdentifier = diagnosticsSubjectIdOrIdentifier;
4285 }
4286
4287
4288 public void setProvisionableRegex(String provisionableRegex) {
4289 this.provisionableRegex = provisionableRegex;
4290 }
4291
4292
4293 public void setTargetGroupAttributeNameToConfig(
4294 Map<String, GrouperProvisioningConfigurationAttribute> targetGroupAttributeNameToConfig) {
4295 this.targetGroupAttributeNameToConfig = targetGroupAttributeNameToConfig;
4296 }
4297
4298
4299 public void setGrouperProvisioningToTargetTranslation(
4300 Map<String, List<String>> grouperProvisioningToTargetTranslation) {
4301 this.grouperProvisioningToTargetTranslation = grouperProvisioningToTargetTranslation;
4302 }
4303
4304
4305 public void setEntityMatchingAttributes(
4306 List<GrouperProvisioningConfigurationAttribute> entityMatchingAttributes) {
4307 this.entityMatchingAttributes = entityMatchingAttributes;
4308 }
4309
4310
4311 public void setGroupMatchingAttributes(
4312 List<GrouperProvisioningConfigurationAttribute> groupMatchingAttributes) {
4313 this.groupMatchingAttributes = groupMatchingAttributes;
4314 }
4315
4316
4317 public void setGroupMembershipAttributeName(String groupMembershipAttributeName) {
4318 this.groupMembershipAttributeName = groupMembershipAttributeName;
4319 }
4320
4321
4322 public void setGroupMembershipAttributeValue(String groupMembershipAttributeValue) {
4323 this.groupMembershipAttributeValue = groupMembershipAttributeValue;
4324 }
4325
4326
4327 public void setEntityMembershipAttributeName(String entityMembershipAttributeName) {
4328 this.entityMembershipAttributeName = entityMembershipAttributeName;
4329 }
4330
4331
4332 public void setEntityMembershipAttributeValue(String entityMembershipAttributeValue) {
4333 this.entityMembershipAttributeValue = entityMembershipAttributeValue;
4334 }
4335
4336
4337 public void setGroupMatchingAttributeSameAsSearchAttribute(
4338 boolean groupMatchingAttributeSameAsSearchAttribute) {
4339 this.groupMatchingAttributeSameAsSearchAttribute = groupMatchingAttributeSameAsSearchAttribute;
4340 }
4341
4342
4343 public void setEntityMatchingAttributeSameAsSearchAttribute(
4344 boolean entityMatchingAttributeSameAsSearchAttribute) {
4345 this.entityMatchingAttributeSameAsSearchAttribute = entityMatchingAttributeSameAsSearchAttribute;
4346 }
4347
4348
4349 public void setGroupAttributeValueCacheHas(boolean groupAttributeValueCacheHas) {
4350 this.groupAttributeValueCacheHas = groupAttributeValueCacheHas;
4351 }
4352
4353
4354 public void setGroupAttributeDbCaches(
4355 GrouperProvisioningConfigurationAttributeDbCache[] groupAttributeDbCaches) {
4356 this.groupAttributeDbCaches = groupAttributeDbCaches;
4357 }
4358
4359
4360 public void setEntityAttributeDbCaches(
4361 GrouperProvisioningConfigurationAttributeDbCache[] entityAttributeDbCaches) {
4362 this.entityAttributeDbCaches = entityAttributeDbCaches;
4363 }
4364
4365
4366 public void setOperateOnGrouperEntities(boolean operateOnGrouperEntities) {
4367 this.operateOnGrouperEntities = operateOnGrouperEntities;
4368 }
4369
4370
4371 public void setOperateOnGrouperMemberships(boolean operateOnGrouperMemberships) {
4372 this.operateOnGrouperMemberships = operateOnGrouperMemberships;
4373 }
4374
4375
4376 public void setOperateOnGrouperGroups(boolean operateOnGrouperGroups) {
4377 this.operateOnGrouperGroups = operateOnGrouperGroups;
4378 }
4379
4380
4381 public void setConfigured(boolean configured) {
4382 this.configured = configured;
4383 }
4384
4385
4386 public void setTargetEntityAttributeNameToConfig(
4387 Map<String, GrouperProvisioningConfigurationAttribute> targetEntityAttributeNameToConfig) {
4388 this.targetEntityAttributeNameToConfig = targetEntityAttributeNameToConfig;
4389 }
4390
4391
4392 public void setTargetMembershipAttributeNameToConfig(
4393 Map<String, GrouperProvisioningConfigurationAttribute> targetMembershipAttributeNameToConfig) {
4394 this.targetMembershipAttributeNameToConfig = targetMembershipAttributeNameToConfig;
4395 }
4396
4397
4398 public boolean isDeleteMembershipsForUnprovisionableUsers() {
4399 return deleteMembershipsForUnprovisionableUsers;
4400 }
4401
4402
4403 public void setDeleteMembershipsForUnprovisionableUsers(
4404 boolean deleteMembershipsForUnprovisionableUsers) {
4405 this.deleteMembershipsForUnprovisionableUsers = deleteMembershipsForUnprovisionableUsers;
4406 }
4407
4408
4409 public boolean isHasGroupAttributes() {
4410 return hasGroupAttributes;
4411 }
4412
4413
4414 public void setHasGroupAttributes(boolean hasGroupAttributes) {
4415 this.hasGroupAttributes = hasGroupAttributes;
4416 }
4417
4418
4419 public boolean isResolveGroupAttributesWithSql() {
4420 return resolveGroupAttributesWithSql;
4421 }
4422
4423
4424 public void setResolveGroupAttributesWithSql(boolean resolveGroupAttributesWithSql) {
4425 this.resolveGroupAttributesWithSql = resolveGroupAttributesWithSql;
4426 }
4427
4428
4429 public String getGroupAttributesSqlExternalSystem() {
4430 return groupAttributesSqlExternalSystem;
4431 }
4432
4433
4434 public void setGroupAttributesSqlExternalSystem(String groupAttributesSqlExternalSystem) {
4435 this.groupAttributesSqlExternalSystem = groupAttributesSqlExternalSystem;
4436 }
4437
4438
4439 public String getGroupAttributesTableViewName() {
4440 return groupAttributesTableViewName;
4441 }
4442
4443
4444 public void setGroupAttributesTableViewName(String groupAttributesTableViewName) {
4445 this.groupAttributesTableViewName = groupAttributesTableViewName;
4446 }
4447
4448
4449 public String getGroupAttributesColumnNames() {
4450 return groupAttributesColumnNames;
4451 }
4452
4453
4454 public void setGroupAttributesColumnNames(String groupAttributesColumnNames) {
4455 this.groupAttributesColumnNames = groupAttributesColumnNames;
4456 }
4457
4458
4459 public String getGroupAttributesTableStructure() {
4460 return groupAttributesTableStructure;
4461 }
4462
4463
4464 public void setGroupAttributesTableStructure(String groupAttributesTableStructure) {
4465 this.groupAttributesTableStructure = groupAttributesTableStructure;
4466 }
4467
4468
4469 public String getGroupAttributesAttributeNameColumnName() {
4470 return groupAttributesAttributeNameColumnName;
4471 }
4472
4473
4474 public void setGroupAttributesAttributeNameColumnName(
4475 String groupAttributesAttributeNameColumnName) {
4476 this.groupAttributesAttributeNameColumnName = groupAttributesAttributeNameColumnName;
4477 }
4478
4479
4480 public String getGroupAttributesAttributeValueColumnName() {
4481 return groupAttributesAttributeValueColumnName;
4482 }
4483
4484
4485 public void setGroupAttributesAttributeValueColumnName(
4486 String groupAttributesAttributeValueColumnName) {
4487 this.groupAttributesAttributeValueColumnName = groupAttributesAttributeValueColumnName;
4488 }
4489
4490
4491 public String getGroupAttributesGroupMatchingColumn() {
4492 return groupAttributesGroupMatchingColumn;
4493 }
4494
4495
4496 public void setGroupAttributesGroupMatchingColumn(
4497 String groupAttributesGroupMatchingColumn) {
4498 this.groupAttributesGroupMatchingColumn = groupAttributesGroupMatchingColumn;
4499 }
4500
4501
4502 public String getGroupAttributesLastUpdatedColumn() {
4503 return groupAttributesLastUpdatedColumn;
4504 }
4505
4506
4507 public void setGroupAttributesLastUpdatedColumn(String groupAttributesLastUpdatedColumn) {
4508 this.groupAttributesLastUpdatedColumn = groupAttributesLastUpdatedColumn;
4509 }
4510
4511
4512 public String getGroupAttributesLastUpdatedType() {
4513 return groupAttributesLastUpdatedType;
4514 }
4515
4516
4517 public void setGroupAttributesLastUpdatedType(String groupAttributesLastUpdatedType) {
4518 this.groupAttributesLastUpdatedType = groupAttributesLastUpdatedType;
4519 }
4520
4521
4522 public boolean isGroupAttributesRecalcMembershipsOnIncremental() {
4523 return groupAttributesRecalcMembershipsOnIncremental;
4524 }
4525
4526
4527 public void setGroupAttributesRecalcMembershipsOnIncremental(
4528 boolean groupAttributesRecalcMembershipsOnIncremental) {
4529 this.groupAttributesRecalcMembershipsOnIncremental = groupAttributesRecalcMembershipsOnIncremental;
4530 }
4531
4532
4533 public boolean isGroupAttributesSelectAllSqlOnFull() {
4534 return groupAttributesSelectAllSqlOnFull;
4535 }
4536
4537
4538 public void setGroupAttributesSelectAllSqlOnFull(
4539 boolean groupAttributesSelectAllSqlOnFull) {
4540 this.groupAttributesSelectAllSqlOnFull = groupAttributesSelectAllSqlOnFull;
4541 }
4542
4543
4544
4545
4546
4547
4548
4549 public String getMembershipEntityMatchingIdAttribute() {
4550 return this.membershipEntityMatchingIdAttribute;
4551 }
4552
4553
4554
4555
4556
4557 public String getMembershipGroupMatchingIdAttribute() {
4558 return this.membershipGroupMatchingIdAttribute;
4559 }
4560
4561 }