View Javadoc
1   package fr.ifremer.quadrige3.synchro.service.client;
2   
3   /*-
4    * #%L
5    * Quadrige3 Core :: Quadrige3 Client Core
6    * $Id:$
7    * $HeadURL:$
8    * %%
9    * Copyright (C) 2017 Ifremer
10   * %%
11   * This program is free software: you can redistribute it and/or modify
12   * it under the terms of the GNU Affero General Public License as published by
13   * the Free Software Foundation, either version 3 of the License, or
14   * (at your option) any later version.
15   * 
16   * This program is distributed in the hope that it will be useful,
17   * but WITHOUT ANY WARRANTY; without even the implied warranty of
18   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19   * GNU General Public License for more details.
20   * 
21   * You should have received a copy of the GNU Affero General Public License
22   * along with this program.  If not, see <http://www.gnu.org/licenses/>.
23   * #L%
24   */
25  
26  import fr.ifremer.quadrige3.core.ProgressionCoreModel;
27  import fr.ifremer.quadrige3.synchro.service.client.vo.SynchroClientImportResult;
28  import fr.ifremer.quadrige3.synchro.vo.SynchroChangesVO;
29  import fr.ifremer.quadrige3.synchro.vo.SynchroImportContextVO;
30  import org.springframework.transaction.annotation.Propagation;
31  import org.springframework.transaction.annotation.Transactional;
32  
33  import java.io.File;
34  
35  /**
36   * Synchro Client Internal Service Interface
37   * Only Transactional methods
38   * 
39   * Created by Ludovic on 06/04/2016.
40   */
41  @Transactional(propagation = Propagation.REQUIRED)
42  public interface SynchroClientInternalService extends SynchroClientService {
43  
44  	/**
45  	 * Run the importation inside a transaction, from a temporary DB to the local DB.
46  	 * Note: This method is not expected to be executed directly, use importFromTempDb instead
47  	 * 
48  	 * @param userId
49  	 *            the connected user
50  	 * @param dbDirToImport
51  	 *            the temporary DB directory
52  	 * @param importContext
53  	 *            import context
54  	 * @param dataRejectResolver
55  	 *            resolver that gives the strategy to resolve rejected rows
56  	 * @param progressionModel
57  	 *            a not null progression model
58  	 * @param progressionModelMaxCount
59  	 *            the maximum increment that should be used from the importation
60  	 * @return a {@link fr.ifremer.quadrige3.synchro.service.client.vo.SynchroClientImportResult} object.
61  	 */
62  	SynchroClientImportResult importFromTempDbTransactional(
63  			int userId,
64  			File dbDirToImport,
65  			SynchroImportContextVO importContext,
66  			SynchroRejectedRowResolver dataRejectResolver,
67  			ProgressionCoreModel progressionModel,
68  			int progressionModelMaxCount);
69  
70  	/**
71  	 * Imports referential/data from server to local database.
72  	 * <p/>
73  	 * WARNING : Direct connection to Quadrige database (synchronization server will not be used). Note: This method is
74  	 * not expected to be executed directly, use importFromServerDatabase instead
75  	 * 
76  	 * @param userId
77  	 *            the user to synchronize
78  	 * @param importContext
79  	 *            import context
80  	 * @param dataRejectResolver
81  	 *            resolver that gives the strategy to resolve rejected rows
82  	 * @param progressionModel
83  	 *            a not null progression model
84  	 * @param progressionModelMaxCount
85  	 *            the maximum increment that should be used from the importation
86  	 * @return the result of the importation
87  	 */
88  	SynchroClientImportResult importFromServerDatabaseTransactional(
89  			int userId,
90  			SynchroImportContextVO importContext,
91  			SynchroRejectedRowResolver dataRejectResolver,
92  			ProgressionCoreModel progressionModel,
93  			int progressionModelMaxCount);
94  
95  	/**
96  	 * <p>
97  	 * getImportFileInsertAndUpdateChangesTransactional.
98  	 * </p>
99  	 * 
100 	 * @param userId
101 	 *            a int.
102 	 * @param dbZipFile
103 	 *            a {@link File} object.
104 	 * @param importContext
105 	 *            a {@link SynchroImportContextVO} object.
106 	 * @param progressionModel
107 	 *            a {@link ProgressionCoreModel} object.
108 	 * @param progressionModelMaxCount
109 	 *            a int.
110 	 * @param keepTempDirectory
111 	 *            a boolean.
112 	 * @return a {@link fr.ifremer.quadrige3.synchro.vo.SynchroChangesVO} object.
113 	 */
114 	SynchroChangesVO getImportFileInsertAndUpdateChangesTransactional(
115 			int userId,
116 			File dbZipFile,
117 			SynchroImportContextVO importContext,
118 			ProgressionCoreModel progressionModel,
119 			int progressionModelMaxCount,
120 			boolean keepTempDirectory);
121 
122 	/**
123 	 * <p>
124 	 * getImportFileReferentialDeleteChangesTransactional.
125 	 * </p>
126 	 * 
127 	 * @param userId
128 	 *            a int.
129 	 * @param dbZipFile
130 	 *            a {@link File} object.
131 	 * @param importContext
132 	 *            a {@link SynchroImportContextVO} object.
133 	 * @param progressionModel
134 	 *            a {@link ProgressionCoreModel} object.
135 	 * @param progressionModelMaxCount
136 	 *            a int.
137 	 * @param keepTempDirectory
138 	 *            a boolean.
139 	 * @return a {@link fr.ifremer.quadrige3.synchro.vo.SynchroChangesVO} object.
140 	 */
141 	SynchroChangesVO getImportFileReferentialDeleteChangesTransactional(
142 			int userId,
143 			File dbZipFile,
144 			SynchroImportContextVO importContext,
145 			ProgressionCoreModel progressionModel,
146 			int progressionModelMaxCount,
147 			boolean keepTempDirectory);
148 }