diff --git a/eMailerOOo.oxt b/eMailerOOo.oxt
index 29118bb7..25076400 100644
Binary files a/eMailerOOo.oxt and b/eMailerOOo.oxt differ
diff --git a/source/eMailerOOo/META-INF/manifest.xml b/source/eMailerOOo/META-INF/manifest.xml
index fe53c97c..020c6e8f 100644
--- a/source/eMailerOOo/META-INF/manifest.xml
+++ b/source/eMailerOOo/META-INF/manifest.xml
@@ -33,10 +33,10 @@
-
+
+
-
diff --git a/source/eMailerOOo/dist/eMailerOOo.oxt b/source/eMailerOOo/dist/eMailerOOo.oxt
index 29118bb7..25076400 100644
Binary files a/source/eMailerOOo/dist/eMailerOOo.oxt and b/source/eMailerOOo/dist/eMailerOOo.oxt differ
diff --git a/source/eMailerOOo/idl/com/sun/star/mail/SpoolerService.idl b/source/eMailerOOo/idl/com/sun/star/mail/MailSpooler.idl
similarity index 93%
rename from source/eMailerOOo/idl/com/sun/star/mail/SpoolerService.idl
rename to source/eMailerOOo/idl/com/sun/star/mail/MailSpooler.idl
index f2d480a8..2752f190 100644
--- a/source/eMailerOOo/idl/com/sun/star/mail/SpoolerService.idl
+++ b/source/eMailerOOo/idl/com/sun/star/mail/MailSpooler.idl
@@ -24,14 +24,14 @@
╚════════════════════════════════════════════════════════════════════════════════════╝
*/
-#ifndef __com_sun_star_mail_SpoolerService_idl__
-#define __com_sun_star_mail_SpoolerService_idl__
+#ifndef __com_sun_star_mail_MailSpooler_idl__
+#define __com_sun_star_mail_MailSpooler_idl__
-#include
+#include
module com { module sun { module star { module mail {
-service SpoolerService: XSpoolerService
+service MailSpooler: XMailSpooler
{
create();
diff --git a/source/eMailerOOo/idl/com/sun/star/mail/MailServiceConfiguration.idl b/source/eMailerOOo/idl/com/sun/star/mail/MailUser.idl
similarity index 89%
rename from source/eMailerOOo/idl/com/sun/star/mail/MailServiceConfiguration.idl
rename to source/eMailerOOo/idl/com/sun/star/mail/MailUser.idl
index 53f69dfc..ee6ff1f0 100644
--- a/source/eMailerOOo/idl/com/sun/star/mail/MailServiceConfiguration.idl
+++ b/source/eMailerOOo/idl/com/sun/star/mail/MailUser.idl
@@ -24,17 +24,17 @@
╚════════════════════════════════════════════════════════════════════════════════════╝
*/
-#ifndef __com_sun_star_mail_MailServiceConfiguration_idl__
-#define __com_sun_star_mail_MailServiceConfiguration_idl__
+#ifndef __com_sun_star_mail_MailUser_idl__
+#define __com_sun_star_mail_MailUser_idl__
module com { module sun { module star { module mail {
-interface XMailServiceConfiguration;
+interface XMailUser;
-service MailServiceConfiguration : XMailServiceConfiguration
+service MailUser : XMailUser
{
/**
- Constructs an instance of a MailServiceConfiguration.
+ Constructs an instance of a MailUser.
This service use the Mozilla IspDB configuration as a backend.
@param sSender
@@ -42,7 +42,7 @@ service MailServiceConfiguration : XMailServiceConfiguration
The e-mail address has to conform to RFC 822.
@see com::sun::star::mail::XMailServiceProvider
- @see com::sun::star::mail::XMailServiceConfiguration
+ @see com::sun::star::mail::XMailUser
*/
create([in] string sSender);
diff --git a/source/eMailerOOo/idl/com/sun/star/mail/XSpoolerService.idl b/source/eMailerOOo/idl/com/sun/star/mail/XMailSpooler.idl
similarity index 89%
rename from source/eMailerOOo/idl/com/sun/star/mail/XSpoolerService.idl
rename to source/eMailerOOo/idl/com/sun/star/mail/XMailSpooler.idl
index 414527b6..771a9542 100644
--- a/source/eMailerOOo/idl/com/sun/star/mail/XSpoolerService.idl
+++ b/source/eMailerOOo/idl/com/sun/star/mail/XMailSpooler.idl
@@ -24,19 +24,16 @@
╚════════════════════════════════════════════════════════════════════════════════════╝
*/
-#ifndef __com_sun_star_mail_XSpoolerService_idl__
-#define __com_sun_star_mail_XSpoolerService_idl__
+#ifndef __com_sun_star_mail_XMailSpooler_idl__
+#define __com_sun_star_mail_XMailSpooler_idl__
-#include
-#include
+#include
module com { module sun { module star { module mail {
-interface XSpoolerService : com::sun::star::uno::XInterface
+interface XMailSpooler : com::sun::star::io::XActiveDataControl
{
- void start();
- void stop();
boolean isStarted();
long addJob([in] string Sender,
@@ -58,9 +55,6 @@ interface XSpoolerService : com::sun::star::uno::XInterface
long getJobState([in] long JobId);
sequence getJobIds([in] long BatchId);
- void addListener([in] XSpoolerListener Listener);
- void removeListener([in] XSpoolerListener Listener);
-
};
}; }; }; };
diff --git a/source/eMailerOOo/idl/com/sun/star/mail/XMailServiceConfiguration.idl b/source/eMailerOOo/idl/com/sun/star/mail/XMailUser.idl
similarity index 94%
rename from source/eMailerOOo/idl/com/sun/star/mail/XMailServiceConfiguration.idl
rename to source/eMailerOOo/idl/com/sun/star/mail/XMailUser.idl
index a2a61087..1855f475 100644
--- a/source/eMailerOOo/idl/com/sun/star/mail/XMailServiceConfiguration.idl
+++ b/source/eMailerOOo/idl/com/sun/star/mail/XMailUser.idl
@@ -24,8 +24,8 @@
╚════════════════════════════════════════════════════════════════════════════════════╝
*/
-#ifndef __com_sun_star_mail_XMailServiceConfiguration_idl__
-#define __com_sun_star_mail_XMailServiceConfiguration_idl__
+#ifndef __com_sun_star_mail_XMailUser_idl__
+#define __com_sun_star_mail_XMailUser_idl__
#include
#include
@@ -34,7 +34,7 @@
module com { module sun { module star { module mail {
-interface XMailServiceConfiguration : com::sun::star::uno::XInterface
+interface XMailUser : com::sun::star::uno::XInterface
{
boolean supportIMAP();
diff --git a/source/eMailerOOo/idl/com/sun/star/mail/XSpoolerListener.idl b/source/eMailerOOo/idl/com/sun/star/mail/XSpoolerListener.idl
deleted file mode 100644
index ef210070..00000000
--- a/source/eMailerOOo/idl/com/sun/star/mail/XSpoolerListener.idl
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
-╔════════════════════════════════════════════════════════════════════════════════════╗
-║ ║
-║ Copyright (c) 2020 https://prrvchr.github.io ║
-║ ║
-║ Permission is hereby granted, free of charge, to any person obtaining ║
-║ a copy of this software and associated documentation files (the "Software"), ║
-║ to deal in the Software without restriction, including without limitation ║
-║ the rights to use, copy, modify, merge, publish, distribute, sublicense, ║
-║ and/or sell copies of the Software, and to permit persons to whom the Software ║
-║ is furnished to do so, subject to the following conditions: ║
-║ ║
-║ The above copyright notice and this permission notice shall be included in ║
-║ all copies or substantial portions of the Software. ║
-║ ║
-║ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, ║
-║ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES ║
-║ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. ║
-║ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY ║
-║ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, ║
-║ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE ║
-║ OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ║
-║ ║
-╚════════════════════════════════════════════════════════════════════════════════════╝
- */
-
-#ifndef __com_sun_star_mail_XSpoolerListener_idl__
-#define __com_sun_star_mail_XSpoolerListener_idl__
-
-#include
-#include
-
-module com { module sun { module star { module mail {
-
-interface XSpoolerListener: com::sun::star::lang::XEventListener
-{
-
- void started([in] com::sun::star::lang::EventObject Event);
- void stopped([in] com::sun::star::lang::EventObject Event);
-
-};
-
-}; }; }; };
-
-#endif
diff --git a/source/eMailerOOo/resource/eMailer_en_US.properties b/source/eMailerOOo/resource/eMailer_en_US.properties
index 576000a2..1a90687e 100644
--- a/source/eMailerOOo/resource/eMailer_en_US.properties
+++ b/source/eMailerOOo/resource/eMailer_en_US.properties
@@ -118,16 +118,17 @@
507=HsqlDB driver version %s is obsolete.%sYou need to update this driver to version %s or higher.
508=%s - Configuration error
-1000=SpoolerService.start()
-1001=Starting the SpoolerService
+1000=MailSpooler.start()
+1001=Starting the MailSpooler
1002=Email cannot be send, network is offline...
-1003=SpoolerService is started.
+1003=MailSpooler is started.
1010=Spooler.run()
1011=Start sending %s emails...
1012=Sending %s out of %s email(s)
1013=No email to send...
-1014=SpoolerService stopped
+1014=MailSpooler is closed
+1015=MailSpooler has been stopped
1020=Spooler._sendMails()
1021=Start sending email N\u00ba: %s
diff --git a/source/eMailerOOo/resource/eMailer_fr_FR.properties b/source/eMailerOOo/resource/eMailer_fr_FR.properties
index 1a55e04c..15900374 100644
--- a/source/eMailerOOo/resource/eMailer_fr_FR.properties
+++ b/source/eMailerOOo/resource/eMailer_fr_FR.properties
@@ -118,16 +118,17 @@
507=La version %s du pilote HsqlDB est obsolte.%sVous devez mettre jour ce pilote vers une version %s ou suprieure.
508=%s - Erreur de configuration
-1000=SpoolerService.start()
-1001=D\u00e9marrage de SpoolerService
+1000=MailSpooler.start()
+1001=D\u00e9marrage de MailSpooler
1002=Le courriel ne peut \u00eatre envoy\u00e9, le r\u00e9seau est hors ligne...
-1003=SpoolerService \u00e0 d\u00e9marr\u00e9.
+1003=MailSpooler \u00e0 d\u00e9marr\u00e9.
1010=Spooler.run()
1011=Debut d'envoi de %s courriel(s)...
1012=Envoi de %s courriel(s) sur %s
1013=Aucun courriel \u00e0 envoyer...
-1014=SpoolerService est arr\u00eat\u00e9
+1014=MailSpooler c'est ferm
+1015=MailSpooler a t arret\u00e9
1020=Spooler._sendMails()
1021=Debut d'envoi du courriel N\u00ba: %s
diff --git a/source/eMailerOOo/service/SpoolerService.py b/source/eMailerOOo/service/MailSpooler.py
similarity index 90%
rename from source/eMailerOOo/service/SpoolerService.py
rename to source/eMailerOOo/service/MailSpooler.py
index 79513365..4798cf85 100644
--- a/source/eMailerOOo/service/SpoolerService.py
+++ b/source/eMailerOOo/service/MailSpooler.py
@@ -32,7 +32,7 @@
from com.sun.star.lang import XServiceInfo
-from com.sun.star.mail import XSpoolerService
+from com.sun.star.mail import XMailSpooler
from com.sun.star.logging.LogLevel import INFO
from com.sun.star.logging.LogLevel import SEVERE
@@ -44,35 +44,35 @@
# pythonloader looks for a static g_ImplementationHelper variable
g_ImplementationHelper = unohelper.ImplementationHelper()
-g_ImplementationName = 'com.sun.star.mail.SpoolerService'
+g_ImplementationName = 'com.sun.star.mail.MailSpooler'
-class SpoolerService(unohelper.Base,
- XServiceInfo,
- XSpoolerService):
+class MailSpooler(unohelper.Base,
+ XServiceInfo,
+ XMailSpooler):
def __init__(self, ctx):
if self._spooler is None:
with self._lock:
if self._spooler is None:
- SpoolerService.__spooler = Spooler(ctx, self)
+ MailSpooler.__spooler = Spooler(ctx, self)
__lock = Lock()
__spooler = None
@property
def _lock(self):
- return SpoolerService.__lock
+ return MailSpooler.__lock
@property
def _spooler(self):
- return SpoolerService.__spooler
+ return MailSpooler.__spooler
- # XSpoolerService
+ # XMailSpooler
def start(self):
if not self.isStarted():
self._spooler.start()
- def stop(self):
+ def terminate(self):
if self.isStarted():
- self._spooler.stop()
+ self._spooler.terminate()
def isStarted(self):
return self._spooler.isStarted()
@@ -107,6 +107,6 @@ def getSupportedServiceNames(self):
return g_ImplementationHelper.getSupportedServiceNames(g_ImplementationName)
-g_ImplementationHelper.addImplementation(SpoolerService, # UNO object class
+g_ImplementationHelper.addImplementation(MailSpooler, # UNO object class
g_ImplementationName, # Implementation name
(g_ImplementationName,)) # List of implemented services
diff --git a/source/eMailerOOo/service/MailServiceConfiguration.py b/source/eMailerOOo/service/MailUser.py
similarity index 83%
rename from source/eMailerOOo/service/MailServiceConfiguration.py
rename to source/eMailerOOo/service/MailUser.py
index 3a641aa1..4d9f0ea8 100644
--- a/source/eMailerOOo/service/MailServiceConfiguration.py
+++ b/source/eMailerOOo/service/MailUser.py
@@ -30,12 +30,12 @@
import uno
import unohelper
-from com.sun.star.mail import XMailServiceConfiguration
+from com.sun.star.mail import XMailUser
from com.sun.star.lang import XServiceInfo
from emailer import DispatchListener
-from emailer import MailUser
+from emailer import User
from emailer import executeDispatch
from emailer import getPropertyValueSet
@@ -44,23 +44,23 @@
# pythonloader looks for a static g_ImplementationHelper variable
g_ImplementationHelper = unohelper.ImplementationHelper()
-g_ImplementationName = 'org.openoffice.pyuno.MailServiceConfiguration'
+g_ImplementationName = 'org.openoffice.pyuno.MailUser'
-class MailServiceConfiguration(unohelper.Base,
- XServiceInfo,
- XMailServiceConfiguration):
+class MailUser(unohelper.Base,
+ XServiceInfo,
+ XMailUser):
def __init__(self, ctx, sender=''):
self._ctx = ctx
self._sender = sender
- user = MailUser(ctx, sender)
+ user = User(ctx, sender)
if user.isNew():
self._user = None
else:
self._user = user
- print("MailServiceConfiguration.__init__() Sender: %s" % sender)
+ print("MailUser.__init__() Sender: %s" % sender)
-# XMailServiceConfiguration
+# XMailUser
def supportIMAP(self):
if self._user is None:
self._initUser()
@@ -79,18 +79,18 @@ def getReplyToAddress(self):
def getAuthenticator(self, stype):
if self._user is None:
self._initUser()
- print("MailServiceConfiguration.getAuthenticator() MailServerType: %s" % stype.value)
+ print("MailUser.getAuthenticator() MailServerType: %s" % stype.value)
return self._user.getAuthenticator(stype.value)
def getConnectionContext(self, stype):
if self._user is None:
self._initUser()
- print("MailServiceConfiguration.getConnectionContext() MailServerType: %s" % stype.value)
+ print("MailUser.getConnectionContext() MailServerType: %s" % stype.value)
return self._user.getConnectionContext(stype.value)
# Internal method
def setUser(self, sender):
- self._user = MailUser(self._ctx, sender)
+ self._user = User(self._ctx, sender)
def _initUser(self):
listener = DispatchListener(self.setUser)
@@ -106,6 +106,6 @@ def getSupportedServiceNames(self):
return g_ImplementationHelper.getSupportedServiceNames(g_ImplementationName)
-g_ImplementationHelper.addImplementation(MailServiceConfiguration, # UNO object class
+g_ImplementationHelper.addImplementation(MailUser, # UNO object class
g_ImplementationName, # Implementation name
- ('com.sun.star.mail.MailServiceConfiguration',)) # List of implemented services
+ ('com.sun.star.mail.MailUser',)) # List of implemented services
diff --git a/source/eMailerOOo/service/pythonpath/emailer/__init__.py b/source/eMailerOOo/service/pythonpath/emailer/__init__.py
index 632c8742..e6ba103f 100644
--- a/source/eMailerOOo/service/pythonpath/emailer/__init__.py
+++ b/source/eMailerOOo/service/pythonpath/emailer/__init__.py
@@ -39,7 +39,7 @@
from .unotool import getPropertyValueSet
from .unotool import getConfiguration
-from .mailuser import MailUser
+from .user import User
from .maildispatch import MailDispatch
diff --git a/source/eMailerOOo/service/pythonpath/emailer/datasource.py b/source/eMailerOOo/service/pythonpath/emailer/datasource.py
index 5a04aa3b..20d2e980 100644
--- a/source/eMailerOOo/service/pythonpath/emailer/datasource.py
+++ b/source/eMailerOOo/service/pythonpath/emailer/datasource.py
@@ -106,7 +106,7 @@ def getFilterValue(self, value, dbtype):
def getFilter(self, identifier, value, dbtype):
return '"%s" = %s' % (identifier, self.getFilterValue(value, dbtype))
-# Procedures called by the SpoolerService
+# Procedures called by the MailSpooler
def insertJob(self, sender, subject, document, recipient, attachment):
recipients = Array('VARCHAR', recipient)
attachments = Array('VARCHAR', attachment)
diff --git a/source/eMailerOOo/service/pythonpath/emailer/dbqueries.py b/source/eMailerOOo/service/pythonpath/emailer/dbqueries.py
index 3800c0b7..6507f09d 100644
--- a/source/eMailerOOo/service/pythonpath/emailer/dbqueries.py
+++ b/source/eMailerOOo/service/pythonpath/emailer/dbqueries.py
@@ -242,7 +242,7 @@ def getSqlQuery(ctx, name, format=None):
"""
# Delete Procedure Queries
- # SpoolerService Delete Procedure Queries
+ # MailSpooler Delete Procedure Queries
elif name == 'createDeleteJobs':
query = """\
CREATE PROCEDURE "DeleteJobs"(IN JOBIDS INTEGER ARRAY)
@@ -312,7 +312,7 @@ def getSqlQuery(ctx, name, format=None):
END;"""
# Insert Procedure Queries
- # SpoolerService Insert Procedure Queries
+ # MailSpooler Insert Procedure Queries
elif name == 'createInsertJob':
query = """\
CREATE PROCEDURE "InsertJob"(IN SENDER VARCHAR(320),
@@ -343,7 +343,7 @@ def getSqlQuery(ctx, name, format=None):
SET BATCHID = ID;
END;"""
- # SpoolerService Insert Procedure Queries
+ # MailSpooler Insert Procedure Queries
elif name == 'createInsertMergeJob':
query = """\
CREATE PROCEDURE "InsertMergeJob"(IN SENDER VARCHAR(320),
diff --git a/source/eMailerOOo/service/pythonpath/emailer/ispdb/ispdbmodel.py b/source/eMailerOOo/service/pythonpath/emailer/ispdb/ispdbmodel.py
index 0417a2d5..ef2f616e 100644
--- a/source/eMailerOOo/service/pythonpath/emailer/ispdb/ispdbmodel.py
+++ b/source/eMailerOOo/service/pythonpath/emailer/ispdb/ispdbmodel.py
@@ -71,7 +71,7 @@
from ..configuration import g_logourl
from ..configuration import g_chunk
-from ..mailuser import MailUser
+from ..user import User
from .ispdbserver import IspdbServer
@@ -171,7 +171,7 @@ def _getServerConfig(self, progress, update):
progress(20)
mode = getConnectionMode(self._ctx, url.Server)
progress(30)
- user = MailUser(self._ctx, self.Sender)
+ user = User(self._ctx, self.Sender)
progress(40)
request = createService(self._ctx, g_service)
progress(50)
diff --git a/source/eMailerOOo/service/pythonpath/emailer/listener.py b/source/eMailerOOo/service/pythonpath/emailer/listener.py
index 408b072e..79e79721 100644
--- a/source/eMailerOOo/service/pythonpath/emailer/listener.py
+++ b/source/eMailerOOo/service/pythonpath/emailer/listener.py
@@ -42,7 +42,7 @@ def __init__(self, spooler):
# XTerminateListener
def queryTermination(self, event):
try:
- self._spooler.stop()
+ self._spooler.terminate()
except Exception as e:
msg = "TerminateListener Error: %s" % traceback.format_exc()
print(msg)
diff --git a/source/eMailerOOo/service/pythonpath/emailer/mailer/mailermanager.py b/source/eMailerOOo/service/pythonpath/emailer/mailer/mailermanager.py
index 649a98ce..ef9c74a9 100644
--- a/source/eMailerOOo/service/pythonpath/emailer/mailer/mailermanager.py
+++ b/source/eMailerOOo/service/pythonpath/emailer/mailer/mailermanager.py
@@ -37,7 +37,7 @@
from .mailerview import MailerView
from .mailerhandler import DialogHandler
-from ..unotool import createService
+from ..mailertool import getMailSpooler
import traceback
@@ -95,9 +95,7 @@ def sendDocument(self):
print("MailerManager.sendDocument() *************************** %s - %s" % (subject, attachments))
sender, recipients = self._view.getEmail()
url = self._model.getUrl()
- service = 'com.sun.star.mail.SpoolerService'
- spooler = createService(self._ctx, service)
- id = spooler.addJob(sender, subject, url, recipients, attachments)
+ id = getMailSpooler(self._ctx).addJob(sender, subject, url, recipients, attachments)
self._view.endDialog()
except Exception as e:
msg = "Error: %s" % traceback.format_exc()
diff --git a/source/eMailerOOo/service/pythonpath/emailer/mailertool.py b/source/eMailerOOo/service/pythonpath/emailer/mailertool.py
index 9c922374..8f53c33a 100644
--- a/source/eMailerOOo/service/pythonpath/emailer/mailertool.py
+++ b/source/eMailerOOo/service/pythonpath/emailer/mailertool.py
@@ -134,10 +134,15 @@ def getMailService(ctx, service):
stype = uno.Enum('com.sun.star.mail.MailServiceType', service)
return createService(ctx, name).create(stype)
-def getMailConfiguration(ctx, sender):
- service = 'com.sun.star.mail.MailServiceConfiguration'
- config = createService(ctx, service, sender)
- return config
+def getMailUser(ctx, sender):
+ service = 'com.sun.star.mail.MailUser'
+ user = createService(ctx, service, sender)
+ return user
+
+def getMailSpooler(ctx):
+ service = 'com.sun.star.mail.MailSpooler'
+ spooler = createService(ctx, service)
+ return spooler
def getMailMessage(ctx, sender, recipient, subject, body):
service = 'com.sun.star.mail.MailMessage'
diff --git a/source/eMailerOOo/service/pythonpath/emailer/merger/mergermodel.py b/source/eMailerOOo/service/pythonpath/emailer/merger/mergermodel.py
index 44f2facb..203e98cd 100644
--- a/source/eMailerOOo/service/pythonpath/emailer/merger/mergermodel.py
+++ b/source/eMailerOOo/service/pythonpath/emailer/merger/mergermodel.py
@@ -176,14 +176,9 @@ def saveGrids(self):
# Procedures called by WizardPage1
# AddressBook methods
- def _getDatabaseContext(self):
- service = 'com.sun.star.sdb.DatabaseContext'
- return createService(self._ctx, service)
-
def getAvailableAddressBooks(self):
- names = self._getDatabaseContext().getElementNames()
- print("MergerModel.getAvailableAddressBooks(): %s" % (names, ))
- return names
+ service = 'com.sun.star.sdb.DatabaseContext'
+ return createService(self._ctx, service).getElementNames()
def getDefaultAddressBook(self):
book = ''
diff --git a/source/eMailerOOo/service/pythonpath/emailer/merger/page3/mergermanager.py b/source/eMailerOOo/service/pythonpath/emailer/merger/page3/mergermanager.py
index 3f8f63c8..a7e4b395 100644
--- a/source/eMailerOOo/service/pythonpath/emailer/merger/page3/mergermanager.py
+++ b/source/eMailerOOo/service/pythonpath/emailer/merger/page3/mergermanager.py
@@ -46,7 +46,7 @@
from ...mail import MailManager
from ...mail import WindowHandler
-from ...unotool import createService
+from ...mailertool import getMailSpooler
from threading import Condition
import traceback
@@ -106,9 +106,7 @@ def sendDocument(self):
sender, recipients = self._view.getEmail()
url, datasource, query, table, filters = self._model.getDocumentInfo()
print("MergerManager.sendDocument() %s: %s - %s - %s - %s - %s\n%s" % (sender, subject, url, datasource, query, table, recipients))
- service = 'com.sun.star.mail.SpoolerService'
- spooler = createService(self._ctx, service)
- id = spooler.addMergeJob(sender, subject, url, datasource, query, table, recipients, filters, attachments)
+ id = getMailSpooler(self._ctx).addMergeJob(sender, subject, url, datasource, query, table, recipients, filters, attachments)
# MergerManager private setter methods
def _closeDocument(self, document):
diff --git a/source/eMailerOOo/service/pythonpath/emailer/options/optionsmanager.py b/source/eMailerOOo/service/pythonpath/emailer/options/optionsmanager.py
index 6e6cfdbf..bdc4b38b 100644
--- a/source/eMailerOOo/service/pythonpath/emailer/options/optionsmanager.py
+++ b/source/eMailerOOo/service/pythonpath/emailer/options/optionsmanager.py
@@ -38,7 +38,7 @@
from ..logger import LogManager
-from ..spooler import SpoolerListener
+from ..spooler import StreamListener
from ..unotool import (executeDispatch,
getDesktop)
@@ -63,18 +63,24 @@ def __init__(self, ctx, window):
infos = {111: version, 112: path}
self._logger = LogManager(ctx, window.getPeer(), infos, g_identifier, g_defaultlog, g_spoolerlog, g_mailservicelog)
window.addEventListener(OptionsListener(self))
- self._listener = SpoolerListener(self)
- self._model.addSpoolerListener(self._listener)
+ self._listener = StreamListener(self)
+ self._model.addStreamListener(self._listener)
def started(self):
self._view.setSpoolerStatus(*self._model.getSpoolerStatus(1))
- def stopped(self):
+ def closed(self):
self._view.setSpoolerStatus(*self._model.getSpoolerStatus(0))
+ def terminated(self):
+ self._view.setSpoolerStatus(*self._model.getSpoolerStatus(0))
+
+ def error(self):
+ pass
+
def dispose(self):
self._logger.dispose()
- self._model.removeSpoolerListener(self._listener)
+ self._model.removeStreamListener(self._listener)
def loadSetting(self):
self._logger.loadSetting()
diff --git a/source/eMailerOOo/service/pythonpath/emailer/options/optionsmodel.py b/source/eMailerOOo/service/pythonpath/emailer/options/optionsmodel.py
index 97154d6f..97de1eec 100644
--- a/source/eMailerOOo/service/pythonpath/emailer/options/optionsmodel.py
+++ b/source/eMailerOOo/service/pythonpath/emailer/options/optionsmodel.py
@@ -29,7 +29,8 @@
import unohelper
-from ..unotool import createService
+from ..mailertool import getMailSpooler
+
from ..unotool import getConfiguration
from ..unotool import getResourceLocation
from ..unotool import getSimpleFile
@@ -49,17 +50,17 @@ class OptionsModel():
def __init__(self, ctx):
self._ctx = ctx
self._config = getConfiguration(ctx, g_identifier, True)
- self._spooler = createService(ctx, 'com.sun.star.mail.SpoolerService')
+ self._spooler = getMailSpooler(ctx)
self._resolver = getStringResource(ctx, g_identifier, g_extension, 'OptionsDialog')
self._resources = {'SpoolerStatus': 'OptionsDialog.Label4.Label.%s'}
folder = g_folder + g_separator + g_basename
location = getResourceLocation(ctx, g_identifier, folder)
self._url = location + '.odb'
- def addSpoolerListener(self, listener):
+ def addStreamListener(self, listener):
self._spooler.addListener(listener)
- def removeSpoolerListener(self, listener):
+ def removeStreamListener(self, listener):
self._spooler.removeListener(listener)
def getViewData(self):
@@ -77,7 +78,7 @@ def toogleSpooler(self, state):
if state:
self._spooler.start()
else:
- self._spooler.stop()
+ self._spooler.terminate()
def getSpoolerStatus(self, started):
resource = self._resources.get('SpoolerStatus') % started
diff --git a/source/eMailerOOo/service/pythonpath/emailer/spooler/__init__.py b/source/eMailerOOo/service/pythonpath/emailer/spooler/__init__.py
index 30410a83..60b0df21 100644
--- a/source/eMailerOOo/service/pythonpath/emailer/spooler/__init__.py
+++ b/source/eMailerOOo/service/pythonpath/emailer/spooler/__init__.py
@@ -31,6 +31,6 @@
from .mailer import Mailer
-from .listener import SpoolerListener
+from .listener import StreamListener
from .dialog import SpoolerManager
diff --git a/source/eMailerOOo/service/pythonpath/emailer/spooler/dialog/spoolermanager.py b/source/eMailerOOo/service/pythonpath/emailer/spooler/dialog/spoolermanager.py
index 41ef4dab..a8a92aef 100644
--- a/source/eMailerOOo/service/pythonpath/emailer/spooler/dialog/spoolermanager.py
+++ b/source/eMailerOOo/service/pythonpath/emailer/spooler/dialog/spoolermanager.py
@@ -41,14 +41,15 @@
from .spoolerhandler import Tab1Handler
from .spoolerhandler import Tab2Handler
-from ..listener import SpoolerListener
+from ..listener import StreamListener
from ...grid import GridListener
from ...grid import RowSetListener
from ...dispatchlistener import DispatchListener
-from ...unotool import createService
+from ...mailertool import getMailSpooler
+
from ...unotool import executeDispatch
from ...unotool import executeShell
from ...unotool import getPropertyValueSet
@@ -75,8 +76,8 @@ def __init__(self, ctx, datasource, parent):
self._model = SpoolerModel(ctx, datasource)
titles = self._model.getDialogTitles()
self._view = SpoolerView(ctx, DialogHandler(self), Tab1Handler(self), Tab2Handler(self), parent, *titles)
- self._spooler = createService(ctx, 'com.sun.star.mail.SpoolerService')
- self._spoolerlistener = SpoolerListener(self)
+ self._spooler = getMailSpooler(ctx)
+ self._spoolerlistener = StreamListener(self)
self._spooler.addListener(self._spoolerlistener)
self._refreshSpoolerState()
window = self._view.getGridWindow()
@@ -117,10 +118,17 @@ def changeGridSelection(self, index, grid):
def started(self):
self._refreshSpoolerView(1)
- def stopped(self):
+ def closed(self):
self._model.executeRowSet()
self._refreshSpoolerView(0)
+ def terminated(self):
+ self._model.executeRowSet()
+ self._refreshSpoolerView(0)
+
+ def error(self):
+ pass
+
def saveGrid(self):
self._model.saveGrid()
@@ -169,7 +177,7 @@ def toogleSpooler(self, state):
if state:
self._spooler.start()
else:
- self._spooler.stop()
+ self._spooler.terminate()
def closeSpooler(self):
self._view.endDialog()
diff --git a/source/eMailerOOo/service/pythonpath/emailer/spooler/listener.py b/source/eMailerOOo/service/pythonpath/emailer/spooler/listener.py
index b37e423b..71d14369 100644
--- a/source/eMailerOOo/service/pythonpath/emailer/spooler/listener.py
+++ b/source/eMailerOOo/service/pythonpath/emailer/spooler/listener.py
@@ -29,22 +29,28 @@
import unohelper
-from com.sun.star.mail import XSpoolerListener
+from com.sun.star.io import XStreamListener
import traceback
-class SpoolerListener(unohelper.Base,
- XSpoolerListener):
+class StreamListener(unohelper.Base,
+ XStreamListener):
def __init__(self, manager):
self._manager = manager
- # XSpoolerListener
- def started(self, source):
+ # XStreamListener
+ def started(self):
self._manager.started()
- def stopped(self, source):
- self._manager.stopped()
+ def closed(self):
+ self._manager.closed()
+
+ def terminated(self):
+ self._manager.terminated()
+
+ def error(self, e):
+ self._manager.error(e)
def disposing(self, source):
pass
diff --git a/source/eMailerOOo/service/pythonpath/emailer/spooler/mailer.py b/source/eMailerOOo/service/pythonpath/emailer/spooler/mailer.py
index 717e93f4..5b727b66 100644
--- a/source/eMailerOOo/service/pythonpath/emailer/spooler/mailer.py
+++ b/source/eMailerOOo/service/pythonpath/emailer/spooler/mailer.py
@@ -52,7 +52,7 @@
from ..dbtool import getRowDict
-from ..mailertool import getMailConfiguration
+from ..mailertool import getMailUser
from ..mailertool import getMailMessage
from ..mailertool import getMailService
from ..mailertool import getMessageImage
@@ -133,7 +133,7 @@ def _initMailer(self, job, recipient):
self._url, self._urls = self._getUrls(recipient, job, document, merge)
if self._send:
sender = metadata.get('Sender')
- user = getMailConfiguration(self._ctx, sender)
+ user = getMailUser(self._ctx, sender)
self._server = self._getMailServer(user, SMTP)
if self._needThread(user, merge):
threadid = self._createThread(recipient.BatchId, user, document, sender, metadata)
diff --git a/source/eMailerOOo/service/pythonpath/emailer/spooler/spooler.py b/source/eMailerOOo/service/pythonpath/emailer/spooler/spooler.py
index 2f8f3577..4b6e3367 100644
--- a/source/eMailerOOo/service/pythonpath/emailer/spooler/spooler.py
+++ b/source/eMailerOOo/service/pythonpath/emailer/spooler/spooler.py
@@ -63,21 +63,29 @@ class Spooler():
def __init__(self, ctx, source):
self._ctx = ctx
self._source = source
- self._lock = Lock()
self._stop = Event()
self._listeners = []
self._logger = getLogger(ctx, g_spoolerlog)
- self._thread = Thread(target=self._run)
self.DataSource = None
-# Procedures called by TerminateListener and SpoolerService
- def stop(self):
+ __lock = Lock()
+ __thread = Thread()
+
+ @property
+ def _lock(self):
+ return Spooler.__lock
+ @property
+ def _thread(self):
+ return Spooler.__thread
+
+# Procedures called by TerminateListener and MailSpooler
+ def terminate(self):
with self._lock:
if self._thread.is_alive():
self._stop.set()
- self._thread.join()
+ #self._thread.join()
-# Procedures called by SpoolerService
+# Procedures called by MailSpooler
def isStarted(self):
with self._lock:
return self._thread.is_alive()
@@ -85,7 +93,7 @@ def isStarted(self):
def start(self):
with self._lock:
if not self._thread.is_alive():
- self._thread = Thread(target=self._run)
+ Spooler.__thread = Thread(target=self._run)
self._stop.clear()
self._thread.start()
self._started()
@@ -148,14 +156,20 @@ def _logError(self, method, code, *args):
self._logger.logprb(SEVERE, 'MailSpooler', method, code, *args)
def _started(self):
- event = uno.createUnoStruct('com.sun.star.lang.EventObject')
for listener in self._listeners:
- listener.started(event)
+ listener.started()
+
+ def _closed(self):
+ for listener in self._listeners:
+ listener.closed()
- def _stopped(self):
- event = uno.createUnoStruct('com.sun.star.lang.EventObject')
+ def _terminated(self):
for listener in self._listeners:
- listener.stopped(event)
+ listener.terminated()
+
+ def _error(self, e):
+ for listener in self._listeners:
+ listener.error(e)
def _run(self):
handler = RollerHandler(self._ctx, self._logger.Name)
@@ -175,12 +189,15 @@ def _run(self):
if total > 0:
self._logger.logprb(INFO, 'MailSpooler', 'start()', 1011, total)
count = self._sendMails(jobs)
- self._logger.logprb(INFO, 'MailSpooler', 'stop()', 1012, count, total)
+ self._logger.logprb(INFO, 'MailSpooler', self._getMethod(), 1012, count, total)
else:
self._logger.logprb(INFO, 'MailSpooler', 'start()', 1013)
- self._logger.logprb(INFO, 'MailSpooler', 'stop()', 1014)
+ self._logger.logprb(INFO, 'MailSpooler', self._getMethod(), self._getResource(1014))
self._logger.removeRollerHandler(handler)
- self._stopped()
+ if self._stop.is_set():
+ self._terminated()
+ else:
+ self._closed()
def _sendMails(self, jobs):
mailer = Mailer(self._ctx, self._source, self.DataSource.DataBase, self._logger, True)
@@ -192,11 +209,16 @@ def _sendMails(self, jobs):
break
try:
mail = mailer.getMail(job)
+ if self._stop.is_set():
+ self._logger.logprb(INFO, 'MailSpooler', '_sendMails()', 1022, job)
+ break
mailer.sendMail(mail)
except UnoException as e:
+ self._error(e)
self._logger.logprb(SEVERE, 'MailSpooler', '_sendMails()', 1023, job, e.Message)
continue
except Exception as e:
+ self._error(UnoException(str(e), self._source))
self._logger.logprb(SEVERE, 'MailSpooler', '_sendMails()', 1024, job, str(e), traceback.format_exc())
continue
self.DataSource.DataBase.updateRecipient(1, mail.MessageId, job)
@@ -209,3 +231,9 @@ def _isOffLine(self):
mode = getConnectionMode(self._ctx, *g_dns)
return mode == OFFLINE
+ def _getMethod(self):
+ return 'terminate()' if self._stop.is_set() else 'close()'
+
+ def _getResource(self, code):
+ return code + int(self._stop.is_set())
+
diff --git a/source/eMailerOOo/service/pythonpath/emailer/mailuser.py b/source/eMailerOOo/service/pythonpath/emailer/user.py
similarity index 99%
rename from source/eMailerOOo/service/pythonpath/emailer/mailuser.py
rename to source/eMailerOOo/service/pythonpath/emailer/user.py
index 2bd8f583..61d9c21f 100644
--- a/source/eMailerOOo/service/pythonpath/emailer/mailuser.py
+++ b/source/eMailerOOo/service/pythonpath/emailer/user.py
@@ -43,7 +43,7 @@
import traceback
-class MailUser(unohelper.Base):
+class User(unohelper.Base):
def __init__(self, ctx, sender, new=False):
self._sender = sender
name, address = parseaddr(sender)
diff --git a/source/eMailerOOo/types.rdb b/source/eMailerOOo/types.rdb
index d30628bd..4249e661 100644
Binary files a/source/eMailerOOo/types.rdb and b/source/eMailerOOo/types.rdb differ