Skip to content

Commit

Permalink
baseline: copyright and source cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
jflamy committed Dec 25, 2024
1 parent 2e51d8b commit 6716d7e
Show file tree
Hide file tree
Showing 397 changed files with 5,181 additions and 4,694 deletions.
116 changes: 116 additions & 0 deletions fixcopyright.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
#!/bin/bash

# Define the copyright notice
copyright_notice='/*******************************************************************************
* Copyright © 2009-present Jean-François Lamy
*
* Licensed under the Non-Profit Open Software License version 3.0 ("NPOSL-3.0")
* License text at https://opensource.org/licenses/NPOSL-3.0
*******************************************************************************/'

# List of files to update (add your file paths here)
files=(
./owlcms/src/main/java/app/owlcms/AppShell.java
./owlcms/src/main/java/app/owlcms/apputils/JpaJsonConverter.java
./owlcms/src/main/java/app/owlcms/apputils/LogbackConfigReloader.java
./owlcms/src/main/java/app/owlcms/apputils/queryparameters/BaseContent.java
./owlcms/src/main/java/app/owlcms/apputils/queryparameters/DisplayParametersReader.java
./owlcms/src/main/java/app/owlcms/apputils/queryparameters/ParameterReader.java
./owlcms/src/main/java/app/owlcms/apputils/queryparameters/ResultsParameters.java
./owlcms/src/main/java/app/owlcms/apputils/queryparameters/ResultsParametersReader.java
./owlcms/src/main/java/app/owlcms/apputils/queryparameters/SoundParameters.java
./owlcms/src/main/java/app/owlcms/apputils/queryparameters/SoundParametersReader.java
./owlcms/src/main/java/app/owlcms/apputils/queryparameters/TopParameters.java
./owlcms/src/main/java/app/owlcms/apputils/queryparameters/TopParametersReader.java
./owlcms/src/main/java/app/owlcms/components/GroupCategorySelectionMenu.java
./owlcms/src/main/java/app/owlcms/components/GroupSelectionMenu.java
./owlcms/src/main/java/app/owlcms/data/agegroup/AssignedAthletesException.java
./owlcms/src/main/java/app/owlcms/data/agegroup/ChampionshipType.java
./owlcms/src/main/java/app/owlcms/data/athleteSort/Ranking.java
./owlcms/src/main/java/app/owlcms/data/export/AthleteSessionDataReader.java
./owlcms/src/main/java/app/owlcms/data/group/AgeGroupInfo.java
./owlcms/src/main/java/app/owlcms/data/group/AgeGroupInfoFactory.java
./owlcms/src/main/java/app/owlcms/data/group/BWCatInfo.java
./owlcms/src/main/java/app/owlcms/data/group/DisplayGroup.java
./owlcms/src/main/java/app/owlcms/data/jpa/HikariDataSourcePoolDetail.java
./owlcms/src/main/java/app/owlcms/data/records/RecordConfig.java
./owlcms/src/main/java/app/owlcms/data/records/RecordFilter.java
./owlcms/src/main/java/app/owlcms/displays/scoreboard/ResultsJury.java
./owlcms/src/main/java/app/owlcms/displays/scoreboard/ResultsLiftingOrder.java
./owlcms/src/main/java/app/owlcms/displays/scoreboard/ResultsRankingOrder.java
./owlcms/src/main/java/app/owlcms/displays/scoreboard/ResultsRankings.java
./owlcms/src/main/java/app/owlcms/displays/top/AbstractTop.java
./owlcms/src/main/java/app/owlcms/displays/video/StylesDirSelection.java
./owlcms/src/main/java/app/owlcms/fieldofplay/CountdownType.java
./owlcms/src/main/java/app/owlcms/init/MoquetteAuthenticator.java
./owlcms/src/main/java/app/owlcms/jetty/EmbeddedJetty.java
./owlcms/src/main/java/app/owlcms/monitors/IUnregister.java
./owlcms/src/main/java/app/owlcms/monitors/MQTTMonitor.java
./owlcms/src/main/java/app/owlcms/nui/displays/AbstractDisplayPage.java
./owlcms/src/main/java/app/owlcms/nui/displays/attemptboards/AbstractAttemptBoardPage.java
./owlcms/src/main/java/app/owlcms/nui/displays/attemptboards/AthleteFacingAttemptBoardPage.java
./owlcms/src/main/java/app/owlcms/nui/displays/attemptboards/AthleteFacingDecisionBoardPage.java
./owlcms/src/main/java/app/owlcms/nui/displays/attemptboards/PublicFacingAttemptBoardPage.java
./owlcms/src/main/java/app/owlcms/nui/displays/attemptboards/PublicFacingDecisionBoardPage.java
./owlcms/src/main/java/app/owlcms/nui/displays/scoreboards/AbstractResultsDisplayPage.java
./owlcms/src/main/java/app/owlcms/nui/displays/scoreboards/CurrentAthletePage.java
./owlcms/src/main/java/app/owlcms/nui/displays/scoreboards/JuryScoreboardPage.java
./owlcms/src/main/java/app/owlcms/nui/displays/scoreboards/MedalsPage.java
./owlcms/src/main/java/app/owlcms/nui/displays/scoreboards/PublicMultiRanksPage.java
./owlcms/src/main/java/app/owlcms/nui/displays/scoreboards/PublicNoLeadersPage.java
./owlcms/src/main/java/app/owlcms/nui/displays/scoreboards/PublicRankingOrderPage.java
./owlcms/src/main/java/app/owlcms/nui/displays/scoreboards/PublicScoreboardPage.java
./owlcms/src/main/java/app/owlcms/nui/displays/scoreboards/RankingsPage.java
./owlcms/src/main/java/app/owlcms/nui/displays/scoreboards/WarmupLiftingOrderPage.java
./owlcms/src/main/java/app/owlcms/nui/displays/scoreboards/WarmupMultiRanksPage.java
./owlcms/src/main/java/app/owlcms/nui/displays/scoreboards/WarmupNoLeadersPage.java
./owlcms/src/main/java/app/owlcms/nui/displays/scoreboards/WarmupRankingOrderPage.java
./owlcms/src/main/java/app/owlcms/nui/displays/scoreboards/WarmupScoreboardPage.java
./owlcms/src/main/java/app/owlcms/nui/displays/SoundEntries.java
./owlcms/src/main/java/app/owlcms/nui/displays/top/TopSinclairPage.java
./owlcms/src/main/java/app/owlcms/nui/displays/top/TopTeamsPage.java
./owlcms/src/main/java/app/owlcms/nui/displays/top/TopTeamsSinclairPage.java
./owlcms/src/main/java/app/owlcms/nui/home/DisplayLoginView.java
./owlcms/src/main/java/app/owlcms/nui/lifting/NextAthleteAble.java
./owlcms/src/main/java/app/owlcms/nui/preparation/DocumentsGrid.java
./owlcms/src/main/java/app/owlcms/nui/preparation/PreCompetitionTemplates.java
./owlcms/src/main/java/app/owlcms/nui/preparation/RecordConfigEditingFormFactory.java
./owlcms/src/main/java/app/owlcms/nui/preparation/SessionGrid.java
./owlcms/src/main/java/app/owlcms/nui/results/IFilterCascade.java
./owlcms/src/main/java/app/owlcms/nui/results/SessionSelectionGrid.java
./owlcms/src/main/java/app/owlcms/nui/shared/HasBoardMode.java
./owlcms/src/main/java/app/owlcms/nui/shared/OwlcmsLayout.java
./owlcms/src/main/java/app/owlcms/spreadsheet/IRegistrationFileProcessor.java
./owlcms/src/main/java/app/owlcms/spreadsheet/MAthlete.java
./owlcms/src/main/java/app/owlcms/spreadsheet/NRegistrationFileProcessor.java
./owlcms/src/main/java/app/owlcms/spreadsheet/ORegistrationFileProcessor.java
./owlcms/src/main/java/app/owlcms/spreadsheet/XLSXAgeGroupsExport.java
./owlcms/src/main/java/app/owlcms/uievents/AppEvent.java
./owlcms/src/test/java/app/owlcms/data/jpa/BenchmarkDataTest.java
./owlcms/src/test/java/app/owlcms/tests/AgeFactorsTest.java
./owlcms/src/test/java/app/owlcms/tests/GAMXTest.java
./owlcms/src/test/java/app/owlcms/tests/JSONExportImportTest.java
./publicresults/src/main/java/app/owlcms/apputils/queryparameters/ContentParameters.java
./publicresults/src/main/java/app/owlcms/displays/scoreboard/HasBoardMode.java
./publicresults/src/main/java/app/owlcms/prutils/CountdownTimer.java
./publicresults/src/main/java/app/owlcms/prutils/SessionCleanup.java
./publicresults/src/main/java/app/owlcms/publicresults/AppShell.java
./publicresults/src/main/java/app/owlcms/publicresults/Traceable.java
./shared/src/main/java/app/owlcms/servlet/EmbeddedJetty.java
./shared/src/main/java/app/owlcms/servlet/StopProcessingException.java
./shared/src/main/java/app/owlcms/utils/CSSUtils.java
./shared/src/main/java/app/owlcms/utils/DelayTimer.java
./shared/src/main/java/app/owlcms/utils/OwlcmsLicense.java
./shared/src/main/java/app/owlcms/utils/ProcessUtils.java
)

# Add the copyright notice to each file
for file in "${files[@]}"; do
if [ -f "$file" ]; then
# Add the copyright notice at the top of the file
echo "$copyright_notice" | cat - "$file" > temp && mv temp "$file"
echo "Updated: $file"
else
echo "File not found: $file"
fi
done
6 changes: 6 additions & 0 deletions owlcms/src/main/java/app/owlcms/AppShell.java
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
/*******************************************************************************
* Copyright © 2009-present Jean-François Lamy
*
* Licensed under the Non-Profit Open Software License version 3.0 ("NPOSL-3.0")
* License text at https://opensource.org/licenses/NPOSL-3.0
*******************************************************************************/
package app.owlcms;

import org.eclipse.jetty.io.EofException;
Expand Down
199 changes: 98 additions & 101 deletions owlcms/src/main/java/app/owlcms/Main.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2009-2023 Jean-François Lamy
* Copyright © 2009-present Jean-François Lamy
*
* Licensed under the Non-Profit Open Software License version 3.0 ("NPOSL-3.0")
* License text at https://opensource.org/licenses/NPOSL-3.0
Expand Down Expand Up @@ -97,6 +97,23 @@ public void onSessionLoopError(Throwable error) {
private static InitialData initialData;
public static String mqttStartup;
private static Integer demoResetDelay;
private static Server mqttBroker;

public static EmbeddedJetty doRun() {
EmbeddedJetty embeddedJetty = new EmbeddedJetty(null, "owlcms")
.setStartLogger(logger)
.setInitConfig(Main::initConfig)
.setInitData(Main::initData);
Thread server = new Thread(() -> {
try {
embeddedJetty.run(serverPort, "/");
} catch (Exception e) {
logger.error("cannot start server {}\\n{}", e, LoggerUtils.stackTrace(e));
}
});
server.start();
return embeddedJetty;
}

public static Logger getStartupLogger() {
String name = Main.class.getName() + ".startup";
Expand Down Expand Up @@ -135,17 +152,8 @@ public static void initData() {
}
// initialization, don't push out to browsers
OwlcmsFactory.initDefaultFOP();

signalDatabaseReady();
}

private static void signalDatabaseReady() {
try {
logger.info("Data initialized.");
OwlcmsFactory.countDownLatch();
} catch (InterruptedException e) {
LoggerUtils.logError(logger, e, false);
}
signalDatabaseReady();
}

public static void injectSuppliers() {
Expand All @@ -158,9 +166,8 @@ public static void injectSuppliers() {
/**
* The main method.
*
* Start a web server and do all the required initializations for the application If running normally, we run until
* killed. If running as a public demo, we sleep for awhile, and then exit. Some external mechanism such as
* Kubernetes will notice and restart another instance.
* Start a web server and do all the required initializations for the application If running normally, we run until killed. If running as a public demo, we
* sleep for awhile, and then exit. Some external mechanism such as Kubernetes will notice and restart another instance.
*
* @param args the arguments
* @throws Exception the exception
Expand All @@ -173,7 +180,7 @@ public static void main(String... args) throws Exception {
}

init();
//CountDownLatch latch = OwlcmsFactory.getInitializationLatch();
// CountDownLatch latch = OwlcmsFactory.getInitializationLatch();

// restart automatically forever if running as public demo
while (true) {
Expand All @@ -187,27 +194,76 @@ public static void main(String... args) throws Exception {

}

public static EmbeddedJetty doRun() {
EmbeddedJetty embeddedJetty = new EmbeddedJetty(null, "owlcms")
.setStartLogger(logger)
.setInitConfig(Main::initConfig)
.setInitData(Main::initData);
Thread server = new Thread(() -> {
try {
embeddedJetty.run(serverPort, "/");
} catch (Exception e) {
logger.error("cannot start server {}\\n{}", e, LoggerUtils.stackTrace(e));
@SuppressWarnings("deprecation")
public static void startMQTT() {
Config conf = Config.getCurrent();
Boolean mqttInternal = conf.getMqttInternal();
if (mqttInternal == null) {
conf.setMqttInternal(true);
Config.setCurrent(conf);
} else {
// conf.setMqttInternal(true);
// Config.setCurrent(conf);
if (!mqttInternal) {
logger.info("MQTT server disabled using database configuration");
return;
}
});
server.start();
return embeddedJetty;
}

mqttStartup = Long.toString(System.currentTimeMillis());
final IConfig mqttConfig = new MemoryConfig(new Properties());
Config.getCurrent().setMqttConfig(mqttConfig);
mqttConfig.setProperty(IConfig.ALLOW_ANONYMOUS_PROPERTY_NAME,
Boolean.toString(Config.getCurrent().getParamMqttUserName() == null));
mqttConfig.setProperty(IConfig.AUTHENTICATOR_CLASS_NAME, "app.owlcms.init.MoquetteAuthenticator");
mqttConfig.setProperty(IConfig.PORT_PROPERTY_NAME, Config.getCurrent().getParamMqttPort());
mqttConfig.setProperty(IConfig.BUFFER_FLUSH_MS_PROPERTY_NAME, Integer.toString(0));
mqttConfig.setProperty(IConfig.PERSISTENCE_ENABLED_PROPERTY_NAME, Boolean.FALSE.toString());
// this should be in memory, but the DATA_PATH_PROPERTY_NAME does not work with a virtual file system
mqttConfig.setProperty(IConfig.DATA_PATH_PROPERTY_NAME, "mqttData");
new File(mqttConfig.getProperty(IConfig.DATA_PATH_PROPERTY_NAME)).mkdirs();

mqttBroker = new Server();
List<? extends InterceptHandler> userHandlers = Collections.singletonList(new PublisherListener());

if (Config.getCurrent().getParamMqttServer() != null && !Config.getCurrent().getParamMqttServer().isBlank()) {
logger.info("MQTT Server overridden by environment or system parameter, not starting embedded MQTT");
return;
}
if (!Config.getCurrent().getParamMqttInternal()) {
logger.info("Internal MQTT server not enabled, skipping");
return;
}
if (Config.getCurrent().getMqttInternal() == null) {
// default should be true if not set previously
Config.getCurrent().setMqttInternal(true);
}

try {
long now = System.currentTimeMillis();
logger.info("starting MQTT broker.");
mqttBroker.startServer(mqttConfig, userHandlers);
logger.info("started MQTT broker ({} ms).", System.currentTimeMillis() - now);

// Bind a shutdown hook
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
logger.info("Stopping broker");
mqttBroker.stopServer();
logger.info("Broker stopped");
}));
} catch (Exception e) {
logger.error("could not start server", e.toString(), e.getCause());
}
}

public static void stopMQTT() {
mqttBroker.stopServer();
}

/**
* Prepare owlcms
*
* Reads configuration options, injects data, initializes singletons and configurations. The embedded web server can
* then be started.
* Reads configuration options, injects data, initializes singletons and configurations. The embedded web server can then be started.
*
* Sample command line to run on port 80 and in demo mode (automatically generated fake data, in-memory database)
*
Expand All @@ -224,13 +280,13 @@ protected static void init() throws IOException, ParseException {
SLF4JBridgeHandler.install();
// disable poixml warning
StartupUtils.disableWarning();

Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread t, Throwable e) {
System.out.println("Caught " + e);
e.printStackTrace();
}
@Override
public void uncaughtException(Thread t, Throwable e) {
System.out.println("Caught " + e);
e.printStackTrace();
}
});

// read command-line and environment variable parameters
Expand Down Expand Up @@ -290,7 +346,7 @@ private static void injectData(InitialData data,
break;
case BENCHMARK:
BenchmarkData.insertInitialData(
EnumSet.of(ChampionshipType.IWF, ChampionshipType.MASTERS));
EnumSet.of(ChampionshipType.IWF, ChampionshipType.MASTERS));
break;
}
} else {
Expand Down Expand Up @@ -420,74 +476,15 @@ private static void parseConfig() {

masters = StartupUtils.getBooleanParam("masters");
}

private static Server mqttBroker;

@SuppressWarnings("deprecation")
public static void startMQTT() {
Config conf = Config.getCurrent();
Boolean mqttInternal = conf.getMqttInternal();
if (mqttInternal == null) {
conf.setMqttInternal(true);
Config.setCurrent(conf);
} else {
// conf.setMqttInternal(true);
// Config.setCurrent(conf);
if (!mqttInternal) {
logger.info("MQTT server disabled using database configuration");
return;
}
}

mqttStartup = Long.toString(System.currentTimeMillis());
final IConfig mqttConfig = new MemoryConfig(new Properties());
Config.getCurrent().setMqttConfig(mqttConfig);
mqttConfig.setProperty(IConfig.ALLOW_ANONYMOUS_PROPERTY_NAME,
Boolean.toString(Config.getCurrent().getParamMqttUserName() == null));
mqttConfig.setProperty(IConfig.AUTHENTICATOR_CLASS_NAME, "app.owlcms.init.MoquetteAuthenticator");
mqttConfig.setProperty(IConfig.PORT_PROPERTY_NAME, Config.getCurrent().getParamMqttPort());
mqttConfig.setProperty(IConfig.BUFFER_FLUSH_MS_PROPERTY_NAME, Integer.toString(0));
mqttConfig.setProperty(IConfig.PERSISTENCE_ENABLED_PROPERTY_NAME, Boolean.FALSE.toString());
// this should be in memory, but the DATA_PATH_PROPERTY_NAME does not work with a virtual file system
mqttConfig.setProperty(IConfig.DATA_PATH_PROPERTY_NAME, "mqttData");
new File(mqttConfig.getProperty(IConfig.DATA_PATH_PROPERTY_NAME)).mkdirs();

mqttBroker = new Server();
List<? extends InterceptHandler> userHandlers = Collections.singletonList(new PublisherListener());

if (Config.getCurrent().getParamMqttServer() != null && !Config.getCurrent().getParamMqttServer().isBlank()) {
logger.info("MQTT Server overridden by environment or system parameter, not starting embedded MQTT");
return;
}
if (!Config.getCurrent().getParamMqttInternal()) {
logger.info("Internal MQTT server not enabled, skipping");
return;
}
if (Config.getCurrent().getMqttInternal() == null) {
// default should be true if not set previously
Config.getCurrent().setMqttInternal(true);
}

private static void signalDatabaseReady() {
try {
long now = System.currentTimeMillis();
logger.info("starting MQTT broker.");
mqttBroker.startServer(mqttConfig, userHandlers);
logger.info("started MQTT broker ({} ms).", System.currentTimeMillis() - now);

// Bind a shutdown hook
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
logger.info("Stopping broker");
mqttBroker.stopServer();
logger.info("Broker stopped");
}));
} catch (Exception e) {
logger.error("could not start server", e.toString(), e.getCause());
logger.info("Data initialized.");
OwlcmsFactory.countDownLatch();
} catch (InterruptedException e) {
LoggerUtils.logError(logger, e, false);
}
}

public static void stopMQTT() {
mqttBroker.stopServer();
}

private static void warnAndExit(Integer demoResetDelay, EmbeddedJetty server)
throws InterruptedException {
Expand Down
Loading

0 comments on commit 6716d7e

Please sign in to comment.