1 package fr.ifremer.quadrige3.ui.swing.synchro.resolver;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 import fr.ifremer.common.synchro.service.RejectedRow;
28 import fr.ifremer.quadrige3.synchro.service.client.SynchroRejectedRowResolver;
29 import fr.ifremer.quadrige3.ui.swing.DialogHelper;
30
31 import javax.swing.JOptionPane;
32 import java.util.Map;
33
34 import static org.nuiton.i18n.I18n.n;
35 import static org.nuiton.i18n.I18n.t;
36
37
38
39
40
41
42 public class SynchroRejectedRowUIResolver implements SynchroRejectedRowResolver {
43
44
45 static {
46
47 n("quadrige3.action.synchro.export.rejection.BAD_UPDATE_DATE.message");
48 n("quadrige3.action.synchro.export.rejection.BAD_UPDATE_DATE.help");
49 n("quadrige3.action.synchro.export.rejection.DUPLICATE_KEY.message");
50 n("quadrige3.action.synchro.export.rejection.DUPLICATE_KEY.help");
51 n("quadrige3.action.synchro.export.rejection.LOCKED.message");
52 n("quadrige3.action.synchro.export.rejection.LOCKED.help");
53 n("quadrige3.action.synchro.export.rejection.DELETED.message");
54 n("quadrige3.action.synchro.export.rejection.DELETED.help");
55 n("quadrige3.action.synchro.export.failed.rejection.BAD_UPDATE_DATE.message");
56 n("quadrige3.action.synchro.export.failed.rejection.BAD_UPDATE_DATE.help");
57 n("quadrige3.action.synchro.export.failed.rejection.DUPLICATE_KEY.message");
58 n("quadrige3.action.synchro.export.failed.rejection.DUPLICATE_KEY.help");
59 n("quadrige3.action.synchro.export.failed.rejection.LOCKED.message");
60 n("quadrige3.action.synchro.export.failed.rejection.LOCKED.help");
61 n("quadrige3.action.synchro.export.failed.rejection.DELETED.message");
62 n("quadrige3.action.synchro.export.failed.rejection.DELETED.help");
63 n("quadrige3.action.synchro.export.failed.result.title");
64 n("quadrige3.action.synchro.export.result.title");
65
66
67 n("quadrige3.action.synchro.import.rejection.BAD_UPDATE_DATE.message");
68 n("quadrige3.action.synchro.import.rejection.BAD_UPDATE_DATE.help");
69 n("quadrige3.action.synchro.import.rejection.DUPLICATE_KEY.message");
70 n("quadrige3.action.synchro.import.rejection.DUPLICATE_KEY.help");
71 n("quadrige3.action.synchro.import.rejection.LOCKED.message");
72 n("quadrige3.action.synchro.import.rejection.LOCKED.help");
73 n("quadrige3.action.synchro.import.rejection.DELETED.message");
74 n("quadrige3.action.synchro.import.rejection.DELETED.help");
75 n("quadrige3.action.synchro.import.failed.rejection.BAD_UPDATE_DATE.message");
76 n("quadrige3.action.synchro.import.failed.rejection.BAD_UPDATE_DATE.help");
77 n("quadrige3.action.synchro.import.failed.rejection.DUPLICATE_KEY.message");
78 n("quadrige3.action.synchro.import.failed.rejection.DUPLICATE_KEY.help");
79 n("quadrige3.action.synchro.import.failed.rejection.LOCKED.message");
80 n("quadrige3.action.synchro.import.failed.rejection.LOCKED.help");
81 n("quadrige3.action.synchro.import.failed.rejection.DELETED.message");
82 n("quadrige3.action.synchro.import.failed.rejection.DELETED.help");
83 n("quadrige3.action.synchro.import.failed.result.title");
84 n("quadrige3.action.synchro.import.result.title");
85 }
86
87 private final DialogHelper dialogHelper;
88
89 private final String i18nSideKeyPart;
90
91
92
93
94
95
96
97 public SynchroRejectedRowUIResolver(DialogHelper dialogHelper, boolean isImport) {
98 this.dialogHelper = dialogHelper;
99 this.i18nSideKeyPart = isImport ? "import" : "export";
100 }
101
102
103 @Override
104 public RejectedRow.ResolveStrategy resolveReject(RejectedRow.Cause cause, String rejectStr, String rejectMessage) {
105
106 RejectedRow.ResolveStrategy rejectedRowStrategy = null;
107
108 int result = dialogHelper.showConfirmDialog(
109 t("quadrige3.action.synchro." + i18nSideKeyPart + ".rejection." + cause.name() + ".message"),
110 rejectMessage,
111 t("quadrige3.action.synchro." + i18nSideKeyPart + ".rejection." + cause.name() + ".help"),
112 t("quadrige3.action.synchro." + i18nSideKeyPart + ".result.title"),
113 JOptionPane.YES_NO_CANCEL_OPTION);
114
115 switch (result) {
116 case JOptionPane.YES_OPTION:
117 if (cause == RejectedRow.Cause.DUPLICATE_KEY) {
118 rejectedRowStrategy = RejectedRow.ResolveStrategy.DUPLICATE;
119 } else {
120 rejectedRowStrategy = RejectedRow.ResolveStrategy.UPDATE;
121 }
122 break;
123 case JOptionPane.NO_OPTION:
124 if (cause == RejectedRow.Cause.DUPLICATE_KEY) {
125 rejectedRowStrategy = RejectedRow.ResolveStrategy.DO_NOTHING;
126 } else {
127 rejectedRowStrategy = RejectedRow.ResolveStrategy.KEEP_LOCAL;
128 }
129 break;
130 case JOptionPane.CANCEL_OPTION:
131 rejectedRowStrategy = RejectedRow.ResolveStrategy.DO_NOTHING;
132 break;
133 }
134 return rejectedRowStrategy;
135 }
136
137
138 @Override
139 public void showRejectMessage(Map<RejectedRow.Cause, String> rejectedRows, RejectedRow.Cause status, boolean failMessage) {
140 if (rejectedRows.isEmpty() || !rejectedRows.containsKey(status)) {
141 return;
142 }
143
144 String topMessage = t("quadrige3.action.synchro." + i18nSideKeyPart + (failMessage ? ".failed" : "") + ".rejection." + status.name() + ".message");
145 String longMessage = rejectedRows.get(status);
146 String bottomMessage = t("quadrige3.action.synchro." + i18nSideKeyPart + (failMessage ? ".failed" : "") + ".rejection." + status.name() + ".help");
147 String title = t("quadrige3.action.synchro." + i18nSideKeyPart + (failMessage ? ".failed" : "") + ".result.title");
148
149 dialogHelper.showWarningDialog(
150 topMessage,
151 longMessage,
152 bottomMessage,
153 title);
154 }
155
156
157
158
159
160
161 public DialogHelper getDialogHelper() {
162 return dialogHelper;
163 }
164 }