2023-11-19 01:53:56 +03:00
|
|
|
package Common.Passes.All;
|
2023-09-17 22:13:42 +03:00
|
|
|
import Common.Current;
|
|
|
|
|
import Common.Global;
|
2023-11-14 00:56:05 +03:00
|
|
|
import Common.UI.UI;
|
2023-09-17 22:13:42 +03:00
|
|
|
import Common.Utils.Utils;
|
|
|
|
|
import GlobalData.Account.AccountRole;
|
2023-11-19 01:53:56 +03:00
|
|
|
import Repository.ComponentsServer.Component.Component;
|
|
|
|
|
import Repository.ComponentsServer.Component.ComponentType;
|
|
|
|
|
import Repository.ComponentsServer.Component.UI.PublishForm;
|
2023-09-17 22:13:42 +03:00
|
|
|
import Repository.EmailMessage;
|
|
|
|
|
import Repository.RepositoryServer;
|
2023-11-19 01:53:56 +03:00
|
|
|
import Repository.ServerCode;
|
|
|
|
|
import Repository.ServerExchangeUnit_2021;
|
|
|
|
|
import Common.Passes.Server.ComponentsRepositoryPass;
|
|
|
|
|
import Common.Passes.PassCode_2021;
|
|
|
|
|
import Common.Passes.Pass_2021;
|
2023-09-17 22:13:42 +03:00
|
|
|
|
|
|
|
|
import java.util.Date;
|
|
|
|
|
import java.util.Vector;
|
|
|
|
|
public class PublishComponent extends ComponentsRepositoryPass<Component> {
|
|
|
|
|
String version_mail_header = "";
|
|
|
|
|
String version_text = "";
|
|
|
|
|
PublishForm f = new PublishForm();
|
|
|
|
|
@Override
|
|
|
|
|
public String getIconPath() {
|
|
|
|
|
return "/icons/Publish.png";
|
|
|
|
|
}
|
|
|
|
|
@Override
|
|
|
|
|
public String getButtonText() {
|
|
|
|
|
return "";
|
|
|
|
|
}
|
|
|
|
|
@Override
|
|
|
|
|
protected boolean canStart(Object... args) throws Exception {
|
|
|
|
|
if (!Global.isWindows) {
|
|
|
|
|
Log.Writeln_("Публикация компонент разрешена только для Windows");
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
if (!Current.HasAccount()) {
|
|
|
|
|
Log.Writeln_("Окно компонент было открыто до синхронизации прав");
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
if (!Current.getAccount().role.equals(AccountRole.Admin)) {
|
|
|
|
|
Log.Writeln_("Вы не являетесь администратором");
|
|
|
|
|
}
|
|
|
|
|
;
|
|
|
|
|
if (Current.Check(Log, Current.Component)) {
|
|
|
|
|
target = Current.getComponent();
|
|
|
|
|
target.needs_update_minimal_version = false;
|
|
|
|
|
f.fields.cbUpdateMinimalVersion.setSelected(false);
|
|
|
|
|
f.fields.lMinimalVersion.setText(String.valueOf(target.minimal_version));
|
|
|
|
|
f.fields.lPublishingVersion.setText(String.valueOf(target.version));
|
|
|
|
|
if (!target.isValidVersion(Log, "публикуемого")) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
2023-11-14 00:56:05 +03:00
|
|
|
if (target.getComponentType().equals(ComponentType.Sapfor_F)) {
|
|
|
|
|
f.fields.cbAssemblyOnServer.setVisible(true);
|
|
|
|
|
f.fields.cbAssemblyOnServer.setSelected(true);
|
|
|
|
|
} else {
|
|
|
|
|
f.fields.cbAssemblyOnServer.setVisible(false);
|
|
|
|
|
f.fields.cbAssemblyOnServer.setSelected(false);
|
|
|
|
|
}
|
2023-09-17 22:13:42 +03:00
|
|
|
if (f.ShowDialog(code().getDescription())) {
|
|
|
|
|
target.needs_update_minimal_version = f.fields.cbUpdateMinimalVersion.isSelected();
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
@Override
|
|
|
|
|
protected void ServerAction() throws Exception {
|
|
|
|
|
String change_description = (f.Result == null) ? "не указаны" : f.Result;
|
|
|
|
|
String change_record_header = String.join(" ",
|
|
|
|
|
Utils.Brackets(Utils.print_date(new Date())) + ":",
|
|
|
|
|
Current.getAccount().name + Utils.RBrackets(Current.getAccount().email),
|
|
|
|
|
"публикует версию", Utils.DQuotes(target.version)
|
|
|
|
|
);
|
|
|
|
|
String change_record = String.join("\n", change_record_header, "Изменения:",
|
|
|
|
|
change_description,
|
|
|
|
|
RepositoryServer.separator, ""
|
|
|
|
|
);
|
|
|
|
|
String packed =
|
|
|
|
|
target.getComponentType().toString() + "\n" +
|
|
|
|
|
target.getFileName() + "\n" +
|
|
|
|
|
target.getVersionText() + "\n" +
|
|
|
|
|
change_record;
|
|
|
|
|
Command(new ServerExchangeUnit_2021(ServerCode.PublishComponent,
|
|
|
|
|
packed, Utils.packFile(target.getFile())
|
|
|
|
|
));
|
|
|
|
|
if (target.needs_update_minimal_version) {
|
|
|
|
|
packed = target.getComponentType().toString() + "\n" +
|
|
|
|
|
target.getVersionText() + "\n";
|
|
|
|
|
//--
|
|
|
|
|
Command(new ServerExchangeUnit_2021(ServerCode.UpdateComponentMinimalVersion,
|
|
|
|
|
packed, Utils.packFile(target.getFile())
|
|
|
|
|
));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@Override
|
|
|
|
|
protected void performDone() throws Exception {
|
|
|
|
|
target.actual_version = target.version;
|
|
|
|
|
target.CheckIfNeedsUpdateOrPublish();
|
|
|
|
|
if ((f.Result != null)) {
|
|
|
|
|
version_mail_header = String.join(" ",
|
|
|
|
|
"Опубликована версия",
|
|
|
|
|
Utils.DQuotes(target.version),
|
|
|
|
|
"компонента",
|
|
|
|
|
Utils.DQuotes(target.getComponentType().getDescription()));
|
|
|
|
|
EmailMessage message =
|
|
|
|
|
new EmailMessage(version_mail_header,
|
|
|
|
|
f.Result,
|
|
|
|
|
new Vector<>(Global.componentsServer.db.subscribers.Data.keySet()));
|
|
|
|
|
if (f.fields.cbForceMail.isSelected())
|
|
|
|
|
message.addAttachement(target.getFile());
|
|
|
|
|
Pass_2021.passes.get(PassCode_2021.Email).Do(message);
|
2023-11-14 00:56:05 +03:00
|
|
|
//---
|
|
|
|
|
if (target.getComponentType().equals(ComponentType.Sapfor_F) && f.fields.cbAssemblyOnServer.isSelected()) {
|
|
|
|
|
UI.getMainWindow().FocusTesting();
|
|
|
|
|
UI.getMainWindow().getTestingWindow().FocusSapforTesting();
|
|
|
|
|
passes.get(PassCode_2021.InstallServerSapfor).Do();
|
|
|
|
|
}
|
2023-09-17 22:13:42 +03:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@Override
|
|
|
|
|
protected void showDone() throws Exception {
|
|
|
|
|
Global.RefreshUpdatesStatus();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|