рефактиринг рассылки.v++

This commit is contained in:
2024-11-27 02:42:26 +03:00
parent 14f2e90d7a
commit d559e9963d
19 changed files with 135 additions and 152 deletions

17
.idea/workspace.xml generated
View File

@@ -8,6 +8,23 @@
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="e42177c3-2328-4b27-8a01-35779b2beb99" name="Default Changelist" comment=""> <list default="true" id="e42177c3-2328-4b27-8a01-35779b2beb99" name="Default Changelist" comment="">
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Constants.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Constants.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Passes/All/AppendBugReportField.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Passes/All/AppendBugReportField.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Passes/All/CheckedEmail.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Passes/All/CheckedEmail.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Passes/All/EditAccount.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Passes/All/EditAccount.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Passes/All/Email.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Passes/All/Email.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Passes/All/PublishBugReport.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Passes/All/PublishBugReport.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Passes/All/PublishComponent.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Passes/All/PublishComponent.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Passes/All/UpdateBugReportField.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Passes/All/UpdateBugReportField.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Repository/BugReport/BugReport.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Repository/BugReport/BugReport.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Repository/EmailMessage.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Repository/EmailMessage.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Repository/RepositoryServer.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Repository/RepositoryServer.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Repository/Server/ComponentsServer.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Repository/Server/ComponentsServer.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Repository/Server/ServerCode.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Repository/Server/ServerCode.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/Common/TestingPlanner.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/Common/TestingPlanner.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/Common/TestingServer.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/Common/TestingServer.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/SAPFOR/SapforTestingPlanner.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/SAPFOR/SapforTestingPlanner.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Utils.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Utils.java" afterDir="false" />
</list> </list>
<option name="SHOW_DIALOG" value="false" /> <option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" /> <option name="HIGHLIGHT_CONFLICTS" value="true" />

View File

@@ -447,7 +447,8 @@ public class Constants {
//</editor-fold> //</editor-fold>
}; };
public static Vector<String> admins_mails = new Vector_<>( public static Vector<String> admins_mails = new Vector_<>(
"sapfor.tracker@internet.ru",
"vmk-post@yandex.ru", "vmk-post@yandex.ru",
"79854210702@ya.ru" "79854210702@ya.ru"
); );
} }

View File

@@ -80,12 +80,12 @@ public class AppendBugReportField extends ComponentsRepositoryPass<BugReport> {
message_text = target.comment; message_text = target.comment;
break; break;
} }
Global.mainModule.getPass(PassCode.CheckedEmail).Do( EmailMessage message= new EmailMessage(
new EmailMessage( message_header + " " + Utils_.Brackets(Global.mainModule.getAccount().name),
message_header + " " + Utils_.Brackets(Global.mainModule.getAccount().name), message_text
message_text,
target.getRecipients()
)
); );
for (String address: target.getRecipients()) {
Global.mainModule.getPass(PassCode.CheckedEmail).Do(message, address);
}
} }
} }

View File

@@ -1,53 +1,19 @@
package _VisualDVM.Passes.All; package _VisualDVM.Passes.All;
import _VisualDVM.Passes.Server.ComponentsRepositoryPass;
import _VisualDVM.Repository.EmailMessage;
import _VisualDVM.Repository.Server.ServerCode;
import _VisualDVM.Repository.Server.ServerExchangeUnit_2021;
import _VisualDVM.Repository.Subscribes.Subscriber; import _VisualDVM.Repository.Subscribes.Subscriber;
import _VisualDVM.Utils;
import java.util.Vector;
//http://java-online.ru/javax-mail.xhtml //http://java-online.ru/javax-mail.xhtml
//https://javarush.ru/groups/posts/1226-kak-otpravitjh-pisjhmo-iz-java-prilozhenija-s-primerom //https://javarush.ru/groups/posts/1226-kak-otpravitjh-pisjhmo-iz-java-prilozhenija-s-primerom
public class CheckedEmail extends ComponentsRepositoryPass<EmailMessage> { public class CheckedEmail extends Email {
//этот емейл только для клиента. все что он делает отправляет на сервер то. что нужно отправить. //отправляет с учетом включения рассылки у подписчика.
@Override @Override
protected boolean canStart(Object... args) throws Exception { protected boolean canStart(Object... args) throws Exception {
target = (EmailMessage) args[0]; if (super.canStart(args)) {
return true; if (server.db.subscribers.containsKey(address)) {
} Subscriber subscriber = server.db.subscribers.get(address);
@Override
protected int getTimeout() {
return 0;
}
@Override
protected void ServerAction() throws Exception {
Vector<String> targetsNames = new Vector<>();
for (String target : target.targets) {
if (server.db.subscribers.containsKey(target)) {
Subscriber subscriber = server.db.subscribers.get(target);
if (subscriber.mailOn != 0) { if (subscriber.mailOn != 0) {
String[] data = target.split("@"); return true;
if (data.length > 0) {
String tname = data[0];
targetsNames.add(tname);
}
} }
} }
} }
Utils.addDefaultMails(target.targets); return false;
String text_ =
"Адресаты: " + String.join(", ", targetsNames) + "\n" +
target.text;
//нужно разделить сообщение на несколько одинаковых, по числу адресатов.
for (String recipient : target.targets) {
System.out.println(recipient);
EmailMessage part = new EmailMessage();
part.subject = target.subject;
part.text = text_;
part.targets.add(recipient);
part.files.putAll(target.files);
Command(new ServerExchangeUnit_2021(ServerCode.Email, "", part));
}
} }
} }

View File

@@ -7,7 +7,6 @@ import _VisualDVM.Repository.Subscribes.Subscriber;
import _VisualDVM.Repository.Subscribes.UI.SubscriberDialog; import _VisualDVM.Repository.Subscribes.UI.SubscriberDialog;
import javax.swing.*; import javax.swing.*;
import java.util.Vector;
public class EditAccount extends Email { public class EditAccount extends Email {
public String name; public String name;
public String email; public String email;
@@ -29,10 +28,11 @@ public class EditAccount extends Email {
} }
name = res.name; name = res.name;
email = res.address; email = res.address;
Vector<String> rec = new Vector<>();
rec.add(email);
password = String.valueOf(getRandomIntegerBetweenRange(1111, 9999)); password = String.valueOf(getRandomIntegerBetweenRange(1111, 9999));
return super.canStart(new EmailMessage("Код подтверждения визуализатора для: " + Utils_.Brackets(name), password, rec)); return super.canStart(
new EmailMessage("Код подтверждения визуализатора для: " + Utils_.Brackets(name), password),
email
);
} }
return false; return false;
} }

View File

@@ -4,10 +4,11 @@ import _VisualDVM.Repository.EmailMessage;
import _VisualDVM.Repository.Server.ServerCode; import _VisualDVM.Repository.Server.ServerCode;
import _VisualDVM.Repository.Server.ServerExchangeUnit_2021; import _VisualDVM.Repository.Server.ServerExchangeUnit_2021;
public class Email extends ComponentsRepositoryPass<EmailMessage> { public class Email extends ComponentsRepositoryPass<EmailMessage> {
//этот емейл только для клиента. все что он делает отправляет на сервер то. что нужно отправить. protected String address;
@Override @Override
protected boolean canStart(Object... args) throws Exception { protected boolean canStart(Object... args) throws Exception {
target = (EmailMessage) args[0]; target = (EmailMessage) args[0];
address = (String) args[1];
return true; return true;
} }
@Override @Override
@@ -16,6 +17,6 @@ public class Email extends ComponentsRepositoryPass<EmailMessage> {
} }
@Override @Override
protected void ServerAction() throws Exception { protected void ServerAction() throws Exception {
Command(new ServerExchangeUnit_2021(ServerCode.Email, "", target)); Command(new ServerExchangeUnit_2021(ServerCode.Email, address, target));
} }
} }

View File

@@ -52,9 +52,10 @@ public class PublishBugReport extends Pass<BugReport> {
Global.mainModule.getPass(PassCode.SendBugReport).Do(); Global.mainModule.getPass(PassCode.SendBugReport).Do();
Global.componentsServer.db.Update(target); Global.componentsServer.db.Update(target);
//3- рассылка //3- рассылка
EmailMessage message = new EmailMessage("Обнаружена ошибка " + Utils_.Brackets(target.id), EmailMessage message = new EmailMessage(
target.getNewMailText(), "Обнаружена ошибка " + Utils_.Brackets(target.id),
target.getRecipients()); target.getNewMailText()
);
if (!target.project_version.isEmpty()) { if (!target.project_version.isEmpty()) {
message.addAttachement(target.getArchiveFile()); message.addAttachement(target.getArchiveFile());
//со скринами будет небольшой трабл. потому что теретически возможна ситуация, //со скринами будет небольшой трабл. потому что теретически возможна ситуация,
@@ -64,7 +65,9 @@ public class PublishBugReport extends Pass<BugReport> {
message.addAttachement(screen); message.addAttachement(screen);
} }
} }
Global.mainModule.getPass(PassCode.CheckedEmail).Do(message); for (String address: target.getRecipients()) {
Global.mainModule.getPass(PassCode.CheckedEmail).Do(message, address);
}
} }
@Override @Override
protected void showDone() throws Exception { protected void showDone() throws Exception {

View File

@@ -1,5 +1,6 @@
package _VisualDVM.Passes.All; package _VisualDVM.Passes.All;
import Common.Utils.Utils_; import Common.Utils.Utils_;
import _VisualDVM.Constants;
import _VisualDVM.Global; import _VisualDVM.Global;
import _VisualDVM.GlobalData.Account.AccountRole; import _VisualDVM.GlobalData.Account.AccountRole;
import _VisualDVM.Passes.PassCode; import _VisualDVM.Passes.PassCode;
@@ -11,6 +12,7 @@ import _VisualDVM.Repository.EmailMessage;
import _VisualDVM.Repository.RepositoryServer; import _VisualDVM.Repository.RepositoryServer;
import _VisualDVM.Repository.Server.ServerCode; import _VisualDVM.Repository.Server.ServerCode;
import _VisualDVM.Repository.Server.ServerExchangeUnit_2021; import _VisualDVM.Repository.Server.ServerExchangeUnit_2021;
import _VisualDVM.Repository.Subscribes.Subscriber;
import java.util.Date; import java.util.Date;
import java.util.Vector; import java.util.Vector;
@@ -104,11 +106,25 @@ public class PublishComponent extends ComponentsRepositoryPass<Component> {
Utils_.DQuotes(target.getComponentType().getDescription())); Utils_.DQuotes(target.getComponentType().getDescription()));
EmailMessage message = EmailMessage message =
new EmailMessage(version_mail_header, new EmailMessage(version_mail_header,
f.Result, f.Result
new Vector<>(Global.componentsServer.db.subscribers.Data.keySet())); );
if (f.fields.cbForceMail.isSelected()) if (f.fields.cbForceMail.isSelected())
message.addAttachement(target.getFile()); message.addAttachement(target.getFile());
Global.mainModule.getPass(PassCode.CheckedEmail).Do(message); //--
Vector<String> mails = new Vector<>();
//--
for (Subscriber subscriber : Global.componentsServer.db.subscribers.Data.values()) {
if ((subscriber.mailOn != 0) && !mails.contains(subscriber.address))
mails.add(subscriber.address);
}
for (String admin_mail : Constants.admins_mails) {
if (!mails.contains(admin_mail))
mails.add(admin_mail);
}
//--
for (String mail : mails) {
Global.mainModule.getPass(PassCode.Email).Do(message, mail);
}
//--- //---
if (target.getComponentType().equals(ComponentType.Sapfor_F) && f.fields.cbAssemblyOnServer.isSelected()) { if (target.getComponentType().equals(ComponentType.Sapfor_F) && f.fields.cbAssemblyOnServer.isSelected()) {
Global.mainModule.getUI().getMainWindow().FocusTesting(); Global.mainModule.getUI().getMainWindow().FocusTesting();

View File

@@ -121,11 +121,13 @@ public class UpdateBugReportField extends ComponentsRepositoryPass<BugReport> {
message_header += "состояние изменилось на " + Utils_.Brackets(target.state.getDescription()); message_header += "состояние изменилось на " + Utils_.Brackets(target.state.getDescription());
break; break;
} }
Global.mainModule.getPass(PassCode.CheckedEmail).Do( EmailMessage message = new EmailMessage(
new EmailMessage(message_header, message_header + " " + Utils_.Brackets(Global.mainModule.getAccount().name),
message_text, message_text
target.getRecipients())
); );
for (String address : target.getRecipients()) {
Global.mainModule.getPass(PassCode.CheckedEmail).Do(message, address);
}
} }
} }
} }

View File

@@ -3,6 +3,7 @@ import Common.Database.Objects.DBObject;
import Common.Database.Objects.rDBObject; import Common.Database.Objects.rDBObject;
import Common.Utils.TextLog; import Common.Utils.TextLog;
import Common.Utils.Utils_; import Common.Utils.Utils_;
import _VisualDVM.Constants;
import _VisualDVM.Global; import _VisualDVM.Global;
import _VisualDVM.Repository.Component.ComponentType; import _VisualDVM.Repository.Component.ComponentType;
import _VisualDVM.Repository.Component.ComponentsSet; import _VisualDVM.Repository.Component.ComponentsSet;
@@ -89,8 +90,14 @@ public class BugReport extends rDBObject {
for (String a : data) for (String a : data)
if (a.length() > 0) if (a.length() > 0)
res.add(a); res.add(a);
//всегда добавляем себя и админов--
if (!res.contains(Global.mainModule.getAccount().email)) if (!res.contains(Global.mainModule.getAccount().email))
res.add(Global.mainModule.getAccount().email); res.add(Global.mainModule.getAccount().email);
for (String address: Constants.admins_mails) {
if (!res.contains(address))
res.add(address);
}
//---------------------------------
return res; return res;
} }
public File getArchiveFile() { public File getArchiveFile() {

View File

@@ -61,7 +61,7 @@ public class Visualiser extends Component {
//http://www.seostella.com/ru/article/2012/02/05/formatirovanie-daty-v-java.html //http://www.seostella.com/ru/article/2012/02/05/formatirovanie-daty-v-java.html
@Override @Override
public void GetVersionInfo() { public void GetVersionInfo() {
version = 1122; version = 1123;
String pattern = "MMM dd yyyy HH:mm:ss"; String pattern = "MMM dd yyyy HH:mm:ss";
DateFormat df = new SimpleDateFormat(pattern, Locale.ENGLISH); DateFormat df = new SimpleDateFormat(pattern, Locale.ENGLISH);
date_text = df.format(getClassBuildTime()); date_text = df.format(getClassBuildTime());

View File

@@ -4,18 +4,20 @@ import Common.Utils.Utils_;
import java.io.File; import java.io.File;
import java.io.Serializable; import java.io.Serializable;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.Vector;
public class EmailMessage implements Serializable { public class EmailMessage implements Serializable {
public String subject = ""; //тема письма public String subject = ""; //тема письма
public String text = ""; //текст письма public String text = ""; //текст письма
public Vector<String> targets = new Vector<>(); //адресаты
public LinkedHashMap<String, byte[]> files = new LinkedHashMap<>(); //вложения. public LinkedHashMap<String, byte[]> files = new LinkedHashMap<>(); //вложения.
public EmailMessage() { public EmailMessage() {
} }
public EmailMessage(String subject_in, String text_in, Vector<String> targets_in) { public EmailMessage(String subject_in, String text_in) {
subject = subject_in; subject = subject_in;
text = text_in; text = text_in;
targets.addAll(targets_in); }
public EmailMessage(EmailMessage message_in) {
subject = message_in.subject;
text = message_in.text;
files.putAll(message_in.files);
} }
public void addAttachement(File f) throws Exception { public void addAttachement(File f) throws Exception {
files.put(f.getName(), Utils_.fileToBytes(f)); files.put(f.getName(), Utils_.fileToBytes(f));

View File

@@ -83,10 +83,7 @@ public abstract class RepositoryServer<D extends Database> {
ex.printStackTrace(); ex.printStackTrace();
} }
} }
protected void checkTargets(EmailMessage message_in) { public void Email(EmailMessage message_in, String address_in) throws Exception {
}
public void Email(EmailMessage message_in, File... directAttachements) throws Exception {
checkTargets(message_in);
Thread thread = new Thread(() -> { Thread thread = new Thread(() -> {
try { try {
Properties props = new Properties(); Properties props = new Properties();
@@ -115,45 +112,34 @@ public abstract class RepositoryServer<D extends Database> {
Constants.MailPassword); Constants.MailPassword);
} }
}); });
for (String target : message_in.targets) { boolean done = false;
boolean done = false; int attempts = 5;
int attempts = 5; while (!done && (attempts > 0)) {
while (!done && (attempts > 0)) { try {
try { MimeMessage message = new MimeMessage(session);
MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress(Constants.MailAddress));
message.setFrom(new InternetAddress(Constants.MailAddress)); message.setRecipients(Message.RecipientType.CC, InternetAddress.parse(address_in));
message.setRecipients(Message.RecipientType.CC, InternetAddress.parse(target)); message.setSubject(message_in.subject);
message.setSubject(message_in.subject); Multipart multipart = new MimeMultipart();
Multipart multipart = new MimeMultipart(); MimeBodyPart textBodyPart = new MimeBodyPart();
MimeBodyPart textBodyPart = new MimeBodyPart(); textBodyPart.setText(message_in.text);
textBodyPart.setText(message_in.text); multipart.addBodyPart(textBodyPart);
multipart.addBodyPart(textBodyPart); for (String aName : innerFiles.keySet()) {
for (String aName : innerFiles.keySet()) { MimeBodyPart attachmentBodyPart = new MimeBodyPart();
MimeBodyPart attachmentBodyPart = new MimeBodyPart(); DataSource source = new FileDataSource(innerFiles.get(aName));
DataSource source = new FileDataSource(innerFiles.get(aName)); attachmentBodyPart.setDataHandler(new DataHandler(source));
attachmentBodyPart.setDataHandler(new DataHandler(source)); attachmentBodyPart.setFileName(aName);
attachmentBodyPart.setFileName(aName); multipart.addBodyPart(attachmentBodyPart);
multipart.addBodyPart(attachmentBodyPart);
}
for (File f : directAttachements) {
if (f.exists()) {
MimeBodyPart attachmentBodyPart = new MimeBodyPart();
DataSource source = new FileDataSource(f);
attachmentBodyPart.setDataHandler(new DataHandler(source));
attachmentBodyPart.setFileName(f.getName());
multipart.addBodyPart(attachmentBodyPart);
}
}
message.setContent(multipart);
Transport.send(message);
done = true;
} catch (Exception ex) {
System.out.println("Исключение во время отправки сообщения абоненту " + Utils_.Brackets(target));
ex.printStackTrace();
Utils_.sleep(1000);
} finally {
attempts--;
} }
message.setContent(multipart);
Transport.send(message);
done = true;
} catch (Exception ex) {
System.out.println("Исключение во время отправки сообщения абоненту " + Utils_.Brackets(address_in));
ex.printStackTrace();
Utils_.sleep(1000);
} finally {
attempts--;
} }
} }
} catch (Exception ex) { } catch (Exception ex) {
@@ -224,7 +210,7 @@ public abstract class RepositoryServer<D extends Database> {
break; break;
case Email: case Email:
Print("Отправка сообщения электронной почты"); Print("Отправка сообщения электронной почты");
Email((EmailMessage) request.object); Email((EmailMessage) request.object, request.arg);
response = new ServerExchangeUnit_2021(ServerCode.OK); response = new ServerExchangeUnit_2021(ServerCode.OK);
break; break;
//</editor-fold> //</editor-fold>

View File

@@ -2,6 +2,7 @@ package _VisualDVM.Repository.Server;
import Common.Database.Objects.DBObject; import Common.Database.Objects.DBObject;
import Common.Database.RepositoryRefuseException; import Common.Database.RepositoryRefuseException;
import Common.Utils.Utils_; import Common.Utils.Utils_;
import _VisualDVM.Constants;
import _VisualDVM.Global; import _VisualDVM.Global;
import _VisualDVM.GlobalData.Account.Account; import _VisualDVM.GlobalData.Account.Account;
import _VisualDVM.GlobalData.Machine.Machine; import _VisualDVM.GlobalData.Machine.Machine;
@@ -85,10 +86,12 @@ public class ComponentsServer extends RepositoryServer<BugReportsDatabase> {
if (rightNow.get(Calendar.DAY_OF_WEEK) == Calendar.MONDAY) { if (rightNow.get(Calendar.DAY_OF_WEEK) == Calendar.MONDAY) {
EmailMessage message = new EmailMessage( EmailMessage message = new EmailMessage(
"db backup", "db backup",
"копия баз данных журнала ошибок", "копия баз данных журнала ошибок"
new Vector<>()
); );
Email(message, db.getFile()); message.addAttachement(db.getFile());
for (String address : Constants.admins_mails) {
Email(message, address);
}
} }
} }
} }
@@ -107,21 +110,6 @@ public class ComponentsServer extends RepositoryServer<BugReportsDatabase> {
return Global.properties.ComponentsServerPort; return Global.properties.ComponentsServerPort;
} }
@Override @Override
protected void checkTargets(EmailMessage message_in) {
System.out.println("unckeched targets = "+String.join(" ", message_in.targets));
Vector<String> checkedTargets = new Vector<>();
for (String email : message_in.targets) {
if (db.subscribers.containsKey(email)) {
Subscriber subscriber = db.subscribers.get(email);
if (subscriber.mailOn > 0) {
checkedTargets.add(email);
}
} else checkedTargets.add(email); //если почта не зарегана значит это мейл с регистрацией.
}
message_in.targets = checkedTargets;
System.out.println("checked targets = "+String.join(" ", message_in.targets));
}
@Override
public void afterDeleteAction(DBObject object) throws Exception { public void afterDeleteAction(DBObject object) throws Exception {
if (object instanceof BugReport) { if (object instanceof BugReport) {
BugReport bugReport = (BugReport) object; BugReport bugReport = (BugReport) object;
@@ -134,10 +122,11 @@ public class ComponentsServer extends RepositoryServer<BugReportsDatabase> {
if (Global.properties.EmailAdminsOnStart) { if (Global.properties.EmailAdminsOnStart) {
EmailMessage message = new EmailMessage( EmailMessage message = new EmailMessage(
"Сервер Sapfor запущен", "Сервер Sapfor запущен",
new Date().toString(), new Date().toString()
new Vector<>()
); );
Email(message); for (String address:Constants.admins_mails) {
Email(message, address);
}
} }
} }
@Override @Override

View File

@@ -88,5 +88,6 @@ public enum ServerCode {
GetSapforForCompilation, GetSapforForCompilation,
GetMaxSapforVersion, GetMaxSapforVersion,
PerformAutoSapforTesting, PerformAutoSapforTesting,
Email_new
; ;
} }

View File

@@ -107,8 +107,7 @@ public abstract class TestingPlanner<P extends TestingPackage> extends Repositor
message.subject = "Состояние пакета тестирования " + packageDescription() + " " + message.subject = "Состояние пакета тестирования " + packageDescription() + " " +
Utils_.Brackets(testingPackage.id) + " изменилось на " + Utils_.Brackets(testingPackage.state.getDescription()); Utils_.Brackets(testingPackage.id) + " изменилось на " + Utils_.Brackets(testingPackage.state.getDescription());
message.text = testingPackage.description; message.text = testingPackage.description;
message.targets.add(testingPackage.sender_address); ServerCommand(ServerCode.Email, testingPackage.sender_address, message);
ServerCommand(ServerCode.Email, message);
} }
} }
//--- //---

View File

@@ -262,13 +262,14 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
EmailMessage message = Log.isEmpty() ? EmailMessage message = Log.isEmpty() ?
new EmailMessage( new EmailMessage(
"Запущено автоматическое тестирование версии " + request.arg + " системы SAPFOR", "Запущено автоматическое тестирование версии " + request.arg + " системы SAPFOR",
"Пакет " + Utils_.Brackets(autoPackage.id), new Vector<>()) : "Пакет " + Utils_.Brackets(autoPackage.id)) :
new EmailMessage( new EmailMessage(
"Не удалось запустить автоматическое тестирование версии " + request.arg + " системы SAPFOR", "Не удалось запустить автоматическое тестирование версии " + request.arg + " системы SAPFOR",
Log.toString(), Log.toString()
new Vector<>()
); );
Email(message); for (String address: Constants.admins_mails){
Email(message, address);
}
break; break;
case DownloadTest: case DownloadTest:
Print("Отправить клиенту тест " + request.arg); Print("Отправить клиенту тест " + request.arg);

View File

@@ -24,7 +24,6 @@ import java.io.File;
import java.nio.charset.Charset; import java.nio.charset.Charset;
import java.nio.file.Paths; import java.nio.file.Paths;
import java.util.Date; import java.util.Date;
import java.util.Vector;
public class SapforTestingPlanner extends TestingPlanner<SapforPackage> { public class SapforTestingPlanner extends TestingPlanner<SapforPackage> {
File workspace; File workspace;
ServerSapfor sapfor; ServerSapfor sapfor;
@@ -320,12 +319,13 @@ public class SapforTestingPlanner extends TestingPlanner<SapforPackage> {
//- //-
EmailMessage message = new EmailMessage( EmailMessage message = new EmailMessage(
"Выполнена сборка системы SAPFOR", "Выполнена сборка системы SAPFOR",
"Версия: " + version_s + "\n" + "Статус: " + status, "Версия: " + version_s + "\n" + "Статус: " + status
new Vector<>()
); );
message.addAttachement(out); message.addAttachement(out);
message.addAttachement(err); message.addAttachement(err);
//- //-
ServerCommand(ServerCode.Email, "", message); for (String address : Constants.admins_mails) {
ServerCommand(ServerCode.Email, address, message);
}
} }
} }

View File

@@ -777,13 +777,5 @@ public class Utils {
System.out.println(new Date(dates.lastElement())); System.out.println(new Date(dates.lastElement()));
return dates.firstElement(); return dates.firstElement();
} }
public static void addDefaultMails(Vector<String> mails) {
if (!mails.contains(Constants.MailAddress))
mails.add(Constants.MailAddress);
for (String mail : Constants.admins_mails) {
if (!mails.contains(mail))
mails.add(mail);
}
}
} }