Skip to content

Commit 7cd26e2

Browse files
committed
LL-1151
1 parent f0a99bb commit 7cd26e2

File tree

5 files changed

+77
-46
lines changed

5 files changed

+77
-46
lines changed

servs/dataimport/dataimport.impl/src/main/java/at/kc/tugraz/ss/serv/dataimport/impl/bitsandpieces/SSDataImportBitsAndPiecesMailImporter.java

Lines changed: 49 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import at.kc.tugraz.ss.serv.voc.conf.SSVocConf;
2626
import at.kc.tugraz.ss.service.filerepo.api.SSFileRepoServerI;
2727
import at.kc.tugraz.ss.service.userevent.api.SSUEServerI;
28+
import at.tugraz.sss.serv.SSDateU;
2829
import at.tugraz.sss.serv.SSEntity;
2930
import at.tugraz.sss.serv.SSEntityE;
3031
import at.tugraz.sss.serv.SSFileExtE;
@@ -35,6 +36,7 @@
3536
import at.tugraz.sss.serv.SSServReg;
3637
import at.tugraz.sss.serv.SSUri;
3738
import at.tugraz.sss.serv.caller.SSServCaller;
39+
import at.tugraz.sss.servs.entity.datatypes.par.SSEntityGetPar;
3840
import at.tugraz.sss.servs.file.datatype.par.SSEntityFileAddPar;
3941
import at.tugraz.sss.servs.mail.SSMailServerI;
4042
import at.tugraz.sss.servs.mail.datatype.SSMail;
@@ -45,6 +47,7 @@ public class SSDataImportBitsAndPiecesMailImporter {
4547

4648
private final SSDataImportBitsAndPiecesPar par;
4749
private final String localWorkPath;
50+
private final SSEntityServerI entityServ;
4851
private final SSFileRepoServerI fileServ;
4952
private final SSUri userUri;
5053
private final SSDataImportBitsAndPiecesMiscFct miscFct;
@@ -60,6 +63,7 @@ public SSDataImportBitsAndPiecesMailImporter(
6063

6164
this.par = par;
6265
this.localWorkPath = localWorkPath;
66+
this.entityServ = entityServ;
6367
this.fileServ = fileServ;
6468
this.userUri = userUri;
6569

@@ -83,12 +87,13 @@ public void handle() throws Exception{
8387
return;
8488
}
8589

86-
final SSMailServerI mailServ = (SSMailServerI) SSServReg.getServ(SSMailServerI.class);
87-
SSMail mail;
88-
SSUri noteUri;
89-
9090
SSLogU.info("start B&P mail import for " + par.authEmail);
9191

92+
final SSMailServerI mailServ = (SSMailServerI) SSServReg.getServ(SSMailServerI.class);
93+
final SSUri notebookUri = handleEmailNotebook();
94+
SSMail mail;
95+
SSUri noteUri;
96+
9297
for(SSEntity mailEntity :
9398
mailServ.mailsReceive(
9499
new SSMailsReceivePar(
@@ -97,12 +102,12 @@ public void handle() throws Exception{
97102
par.emailInPassword,
98103
par.emailInEmail,
99104
true, //withUserRestriction
100-
par.shouldCommit))){
105+
false))){
101106

102107
mail = (SSMail) mailEntity;
103108
noteUri = SSServCaller.vocURICreate();
104109

105-
handleMailContent (mail, noteUri);
110+
handleMailContent (mail, notebookUri, noteUri);
106111
handleMailContentMultimedia(mail, noteUri);
107112
handleMailAttachments (mail, noteUri);
108113
}
@@ -112,15 +117,45 @@ public void handle() throws Exception{
112117
}catch(Exception error){
113118
SSLogU.warn("B&P mail import failed for " + par.authEmail);
114119
SSServErrReg.regErrThrow(error);
115-
}finally{
120+
}
121+
}
122+
123+
private SSUri handleEmailNotebook() throws Exception{
124+
125+
try{
126+
127+
final SSUri notebookUri = SSUri.get(par.emailInUser + "_email_inbox", SSVocConf.sssUri);
128+
129+
final SSEntity notebook =
130+
entityServ.entityGet(
131+
new SSEntityGetPar(
132+
par.user,
133+
notebookUri,
134+
false,
135+
null));
136+
137+
if(notebook == null){
138+
139+
miscFct.addNotebook(
140+
notebookUri,
141+
SSLabel.get(par.emailInEmail + " inbox"),
142+
SSDateU.dateAsLong());
143+
}
144+
145+
return notebookUri;
146+
147+
}catch(Exception error){
148+
SSServErrReg.regErrThrow(error);
149+
return null;
116150
}
117151
}
118152

119153
private void handleMailContent(
120154
final SSMail mail,
155+
final SSUri notebookUri,
121156
final SSUri noteUri) throws Exception{
122157

123-
String xhtmlFilePath;
158+
String txtFilePath;
124159
SSUri pdfFileUri;
125160
String pdfFilePath;
126161

@@ -130,18 +165,17 @@ private void handleMailContent(
130165
return;
131166
}
132167

133-
xhtmlFilePath = localWorkPath + SSVocConf.fileIDFromSSSURI(SSServCaller.vocURICreate(SSFileExtE.xhtml));
168+
txtFilePath = localWorkPath + SSVocConf.fileIDFromSSSURI(SSServCaller.vocURICreate(SSFileExtE.txt));
134169
pdfFileUri = SSServCaller.vocURICreate (SSFileExtE.pdf);
135170
pdfFilePath = localWorkPath + SSVocConf.fileIDFromSSSURI (pdfFileUri);
136171

137-
SSFileU.writeStr(mail.content, xhtmlFilePath);
172+
SSFileU.writeStr(mail.content, txtFilePath);
138173

139174
try{
140175

141-
SSFileU.writePDFFromXHTML(
176+
SSFileU.writePDFFromText(
142177
pdfFilePath,
143-
xhtmlFilePath,
144-
false);
178+
txtFilePath);
145179

146180
}catch(Exception error){
147181

@@ -151,14 +185,14 @@ private void handleMailContent(
151185
}finally{
152186

153187
try{
154-
SSFileU.delFile(xhtmlFilePath);
188+
SSFileU.delFile(txtFilePath);
155189
}catch(Exception error){}
156190
}
157191

158192
miscFct.addNote(
159193
noteUri, //noteUri
160194
SSLabel.get(mail.subject), //noteLabel
161-
null, //notebookUri,
195+
notebookUri, //notebookUri,
162196
mail.creationTime);
163197

164198
miscFct.addNoteUEs(

servs/dataimport/dataimport.serv/src/main/java/at/kc/tugraz/ss/serv/dataimport/serv/task/SSDataImportBitsAndPiecesTask.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ public void run(){
5656
if(!evernoteConf.getEmailInUsers().isEmpty()){
5757
emailInUser = evernoteConf.getEmailInUsers().get(counter);
5858
emailInPassword = evernoteConf.getEmailInPasswords().get(counter);
59-
emailInEmail = evernoteConf.getEmailInPasswords().get(counter);
59+
emailInEmail = evernoteConf.getEmailInEmails().get(counter);
6060
}
6161

6262
new Thread(

servs/evernote/evernote.conf/src/main/java/at/kc/tugraz/ss/serv/jobs/evernote/conf/SSEvernoteConf.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ public void setEmailInPasswords(final List<String> emailInPasswords) {
7070
}
7171

7272
public List<String> getEmailInEmails() {
73-
return emailInPasswords;
73+
return emailInEmails;
7474
}
7575

7676
public void setEmailInEmails(final List<String> emailInEmails) {

servs/evernote/evernote.impl/src/main/java/at/kc/tugraz/ss/serv/jobs/evernote/impl/fct/sql/SSEvernoteSQLFct.java

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -117,14 +117,9 @@ public void addNoteIfNotExists(
117117
final Map<String, String> uniqueKeys = new HashMap<>();
118118

119119
insert(inserts, SSSQLVarNames.noteId, noteUri);
120-
121-
if(notebookUri == null){
122-
insert(inserts, SSSQLVarNames.notebookId, SSStrU.empty);
123-
}else{
124-
insert(inserts, SSSQLVarNames.notebookId, notebookUri);
125-
}
126-
127-
uniqueKey(uniqueKeys, SSSQLVarNames.noteId, noteUri);
120+
insert(inserts, SSSQLVarNames.notebookId, notebookUri);
121+
122+
uniqueKey(uniqueKeys, SSSQLVarNames.noteId, noteUri);
128123

129124
dbSQL.insertIfNotExists(SSSQLVarNames.evernoteNoteTable, inserts, uniqueKeys);
130125

servs/mail/mail.impl/src/main/java/at/tugraz/sss/servs/mail/impl/kc/SSMailReceiverKCDavIMAP.java

Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
package at.tugraz.sss.servs.mail.impl.kc;
2222

2323
import at.kc.tugraz.ss.conf.conf.SSCoreConf;
24+
import at.kc.tugraz.ss.serv.datatypes.entity.api.SSEntityServerI;
2425
import at.kc.tugraz.ss.serv.voc.conf.SSVocConf;
2526
import at.tugraz.sss.serv.SSDBSQLI;
2627
import at.tugraz.sss.serv.SSEntity;
@@ -31,7 +32,9 @@
3132
import at.tugraz.sss.serv.SSLabel;
3233
import at.tugraz.sss.serv.SSLogU;
3334
import at.tugraz.sss.serv.SSServErrReg;
35+
import at.tugraz.sss.serv.SSServReg;
3436
import at.tugraz.sss.serv.caller.SSServCaller;
37+
import at.tugraz.sss.servs.entity.datatypes.par.SSEntityUpdatePar;
3538
import at.tugraz.sss.servs.mail.conf.SSMailConf;
3639
import at.tugraz.sss.servs.mail.datatype.SSMail;
3740
import at.tugraz.sss.servs.mail.datatype.par.SSMailsReceivePar;
@@ -56,6 +59,7 @@ public class SSMailReceiverKCDavIMAP {
5659
private final List<SSEntity> mails = new ArrayList<>();
5760
private final SSDBSQLI dbSQL;
5861
private final SSMailSQLFct sqlFct;
62+
private final SSEntityServerI entityServ;
5963

6064
public SSMailReceiverKCDavIMAP(
6165
final SSDBSQLI dbSQL,
@@ -65,6 +69,7 @@ public SSMailReceiverKCDavIMAP(
6569
this.localWorkPath = SSCoreConf.instGet().getSss().getLocalWorkPath();
6670
this.dbSQL = dbSQL;
6771
this.sqlFct = new SSMailSQLFct(dbSQL);
72+
this.entityServ = (SSEntityServerI) SSServReg.getServ(SSEntityServerI.class);
6873
}
6974

7075
// final String fromUser,
@@ -94,8 +99,7 @@ public List<SSEntity> receiveMails(
9499
final Message messages [] = folder.getMessages();
95100
SSMail mail;
96101
IMAPMessage message;
97-
98-
dbSQL.startTrans(par.shouldCommit);
102+
String hash;
99103

100104
for(int counter = 0; counter < messages.length; counter++){
101105

@@ -105,8 +109,10 @@ public List<SSEntity> receiveMails(
105109
SSServCaller.vocURICreate(),
106110
messages[counter].getSubject(),
107111
messages[counter].getSentDate().getTime());
112+
113+
hash = message.getMessageID() + par.receiverEmail;
108114

109-
if(sqlFct.existsMail(null, message.getContentMD5(), par.receiverEmail)){
115+
if(sqlFct.existsMail(null, hash, par.receiverEmail)){
110116
continue;
111117
}
112118

@@ -115,33 +121,29 @@ public List<SSEntity> receiveMails(
115121
mail,
116122
true);
117123

124+
entityServ.entityUpdate(
125+
new SSEntityUpdatePar(
126+
par.user,
127+
mail.id,
128+
SSEntityE.mail,
129+
mail.label, //label
130+
null, //description,
131+
mail.creationTime, //creationTime
132+
null, //read,
133+
false, //setPublic,
134+
par.withUserRestriction,
135+
false));
136+
118137
sqlFct.addMailIfNotExists(
119138
mail.id,
120139
par.receiverEmail,
121-
message.getContentMD5());
140+
hash);
122141

123142
mails.add(mail);
124143
}
125144

126-
dbSQL.commit(par.shouldCommit);
127-
128145
return mails;
129146
}catch(Exception error){
130-
131-
if(SSServErrReg.containsErr(SSErrE.sqlDeadLock)){
132-
133-
if(dbSQL.rollBack(par.shouldCommit)){
134-
135-
SSServErrReg.reset();
136-
137-
return receiveMails(par);
138-
}else{
139-
SSServErrReg.regErrThrow(error);
140-
return null;
141-
}
142-
}
143-
144-
dbSQL.rollBack(par.shouldCommit);
145147
SSServErrReg.regErrThrow(error);
146148
return null;
147149
}finally{

0 commit comments

Comments
 (0)