Skip to content
Snippets Groups Projects
Commit 339de4cd authored by Jari Lehto's avatar Jari Lehto
Browse files

Released version

parents
Branches
No related tags found
No related merge requests found
contracts/
.classpath
.project
.history/
.idea
.jqwik-database
.lib/
.worksheet
.settings/
*.iml
*.ipr
*.iws
*.log
project/boot/
project/plugins/project/
project/project/
project/*-shim.sbt
project/target/
target/
openjfx/
public/report.txt
public/surefire-report.html
image: maven:latest
variables:
# This will supress any download for dependencies and plugins or upload messages which would clutter the console log.
# `showDateTime` will show the passed time in milliseconds. You need to specify `--batch-mode` to make this work.
MAVEN_OPTS: "-Dhttps.protocols=TLSv1.2 -Dmaven.repo.local=$CI_PROJECT_DIR/.m2/repository -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=WARN -Dorg.slf4j.simpleLogger.showDateTime=true -Djava.awt.headless=true"
MAVEN_CLI_OPTS: "--batch-mode --errors --fail-at-end --show-version"
# -DinstallAtEnd=true -DdeployAtEnd=true"
# Cache downloaded dependencies and plugins between builds.
# To keep cache across branches add ''
cache:
key: "$CI_JOB_NAME"
paths:
- .m2/repository
build:
stage: build
script:
- mvn compile
test:
stage: test
script:
- mvn test
pages:
stage: deploy
script:
- ./report.sh || true
artifacts:
paths:
- public
only:
- master
# DTEK0066 exercise 0 template
## Tehtävänanto
Tehtävänanto löytyy kurssiportaalista.
## Workflow
```bash
$ git clone https://gitlab.utu.fi/tech/education/ooj/ooj2023-exercise0
$ cd template-ooj
< tee tehtävät >
< editoi AUTHORS.TXT >
$ git add -A
$ git commit -m 'Add exercise implementations'
$ git remote add oma https://gitlab.utu.fi/omatunnus/ooj2023-exercise0
$ git push oma
< korjaa/täydennä tehtäviä >
$ git add -A
$ git commit -m 'Fix the exercise task 2'
$ git push oma
```
## Using Maven
```bash
$ mvn clean
$ mvn compile
$ mvn test
$ mvn exec:java
$ mvn javafx:run
$ mvn surefire-report:report
```
## Online report
See <https://gitlab.utu.fi/tech/education/ooj/ooj2023-exercise0/pages>
Your version: https://USERNAME.utugit.fi/ooj2023-exercise0/
pom.xml 0 → 100644
<project>
<modelVersion>4.0.0</modelVersion>
<!--
Welcome!
This pom.xml is *THE* file that defines your Maven style Java project.
Eclipse, IDEA and other development environments with Maven support
or plugins can *import* this project by reading this file.
It usually contains tons of barely readable configuration. Luckily
this basic pom.xml is somewhat readable. All necessary configuration
for customizing your project if located here on top before the
'END OF SIMPLE CONFIGURATION' line below.
-->
<!-- ==== START OF SIMPLE CONFIGURATION ==== -->
<!-- The three parts of the artifact name -->
<groupId>fi.utu.tech</groupId>
<artifactId>ooj-exercise0</artifactId>
<version>1.0.0</version>
<!-- Additional information about the project -->
<name>DTEK0066 exercise set 0</name>
<url>https://gitlab.utu.fi/tech/education/ooj/ooj2023-exercise0</url>
<!-- We want to generate a jar. Don't change. -->
<packaging>jar</packaging>
<properties>
<!-- Configures the main class for this project (i.e. what to launch) -->
<project.mainclass>fi.utu.tech.ooj.exercise0.Main</project.mainclass>
<project.mainmodule>fi.utu.tech.ooj.exercise0</project.mainmodule>
<project.launcher>myapp</project.launcher>
<!-- The source encoding should always be utf-8. Don't change. -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- Version numbers for various modules -->
<jdk.version>17</jdk.version>
<jqwik.version>1.7.1</jqwik.version>
<junit.version>5.9.1</junit.version>
<junitplatform.version>1.9.1</junitplatform.version>
</properties>
<!-- ==== END OF SIMPLE CONFIGURATION ==== -->
<repositories>
<!-- https://search.maven.org/ -->
<repository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>Central Repository</name>
<url>https://repo.maven.apache.org/maven2</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-commons</artifactId>
<version>${junitplatform.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>net.jqwik</groupId>
<artifactId>jqwik</artifactId>
<version>${jqwik.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>com.diffplug.spotless</groupId>
<artifactId>spotless-maven-plugin</artifactId>
<version>2.29.0</version>
<configuration>
<formats>
<format>
<includes>src/**/*.java</includes>
<prettier>
<devDependencies>
<prettier>2.8.1</prettier>
<prettier-plugin-java>2.0.0</prettier-plugin-java>
</devDependencies>
<config>
<tabWidth>4</tabWidth>
<parser>java</parser>
</config>
</prettier>
</format>
<format>
<includes>
<include>pom.xml</include>
</includes>
<prettier>
<devDependencyProperties>
<property>
<name>prettier</name>
<value>2.8.1</value>
</property>
<property>
<name>@prettier/plugin-xml</name>
<value>2.2.0</value>
</property>
</devDependencyProperties>
<config>
<tabWidth>4</tabWidth>
<printWidth>100</printWidth>
<parser>xml</parser>
</config>
</prettier>
</format>
<format>
<includes>
<include>*.md</include>
<include>.gitignore</include>
</includes>
<trimTrailingWhitespace />
<endWithNewline />
<indent>
<spaces>true</spaces>
<spacesPerTab>4</spacesPerTab>
</indent>
</format>
</formats>
<java>
<includes>
<include>src/**/*.java</include>
</includes>
<trimTrailingWhitespace />
<endWithNewline />
<indent>
<spaces>true</spaces>
<spacesPerTab>4</spacesPerTab>
</indent>
<importOrder />
<removeUnusedImports />
<googleJavaFormat>
<version>1.15.0</version>
<style>AOSP</style>
</googleJavaFormat>
</java>
</configuration>
</plugin>
<!-- Run this app with exec:java -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<goals>
<goal>java</goal>
</goals>
</execution>
</executions>
<configuration>
<mainClass>${project.mainclass}</mainClass>
</configuration>
</plugin>
<!-- Make the packaged jar executable -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.3.0</version>
<configuration>
<!-- DO NOT include log4j.properties file in your Jar -->
<excludes>
<exclude>**/log4j.properties</exclude>
</excludes>
<archive>
<manifest>
<!-- Jar file entry point -->
<mainClass>${project.mainclass}</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<!-- JDK source/target versions -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.10.1</version>
<configuration>
<compilerArgument>-Xlint:unchecked</compilerArgument>
<source>${jdk.version}</source>
<target>${jdk.version}</target>
</configuration>
</plugin>
<!-- Also create a jar of the sources -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.2.1</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- JShell (jshell:run) -->
<plugin>
<groupId>com.github.johnpoth</groupId>
<artifactId>jshell-maven-plugin</artifactId>
<version>1.3</version>
</plugin>
<!-- UTU DbC Javadoc annotations -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.4.1</version>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
<configuration>
<tags>
<tag>
<name>toDo</name>
<placement>a</placement>
<head>To do:</head>
</tag>
<tag>
<name>classInvariant</name>
<placement>t</placement>
<head>Class invariant:</head>
</tag>
<tag>
<name>classInvariantProtected</name>
<placement>t</placement>
<head>Protected class invariant:</head>
</tag>
<tag>
<name>classInvariantPrivate</name>
<placement>t</placement>
<head>Private class invariant:</head>
</tag>
<tag>
<name>abstractionFunction</name>
<placement>t</placement>
<head>Abstraction function:</head>
</tag>
<tag>
<name>pre</name>
<placement>cm</placement>
<head>Precondition:</head>
</tag>
<tag>
<name>post</name>
<placement>cm</placement>
<head>Postcondition:</head>
</tag>
<tag>
<name>postProtected</name>
<placement>cm</placement>
<head>Protected postcondition:</head>
</tag>
<tag>
<name>postPrivate</name>
<placement>cm</placement>
<head>Private postcondition:</head>
</tag>
<tag>
<name>time</name>
<placement>cmf</placement>
<head>Time complexity:</head>
</tag>
<tag>
<name>space</name>
<placement>cmf</placement>
<head>Space complexity:</head>
</tag>
<tag>
<name>correspondence</name>
<placement>a</placement>
<head>Correspondence:</head>
</tag>
<tag>
<name>download</name>
<placement>a</placement>
<head>Download:</head>
</tag>
</tags>
<show>protected</show>
<failOnError>false</failOnError>
<sourceFileExcludes>
<sourceFileExclude>**/module-info.java</sourceFileExclude>
</sourceFileExcludes>
</configuration>
</plugin>
<!-- JUnit & JQwik test integration -->
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M7</version>
</plugin>
<plugin>
<artifactId>maven-failsafe-plugin</artifactId>
<version>3.0.0-M7</version>
</plugin>
</plugins>
</build>
</project>
public/favicon-32x32.png

1.61 KiB

<!DOCTYPE html>
<html>
<head>
<meta charSet="utf-8"/>
<link rel="icon" href="favicon-32x32.png" type="image/png"/>
<link rel="stylesheet" href="style.css">
<title>UTU / OOJ project report</title>
</head>
<body>
<div class="layout">
<div class="layout-container">
<header>
<div class="header">
<div class="header-content">
<a href="https://www.utu.fi">
<img class="sitebranding" alt="University of Turku" src="utulogo.png" />
</a>
<nav>
<ul>
<li class="active"><a href="/">Report</a></li>
</ul>
</nav>
</div>
</div>
</header>
<div class="main-content">
<h2>Project report</h2>
</div>
<div class="main-content">
<iframe src="report.txt" title="Build"></iframe>
</div>
<div class="main-content">
<iframe src="surefire-report.html" title="Surefire report"></iframe>
</div>
<footer>
<div class="footer">
<div class="footer-content">
<a href="https://www.utu.fi">
<img class="sitebranding" alt="University of Turku" src="utulogow.png"/>
</a>
<nav>
<ul>
<li>© 2019 <a href="https://soft.utu.fi/">Software engineering</a></li>
</ul>
</nav>
</div>
</div>
</footer>
</div>
</div>
</body>
</html>
@font-face {
font-family: "brother-1816";
src: url("https://use.typekit.net/af/e4f93d/00000000000000003b9b03cb/27/l?primer=8c6cdece1802ac03951c30593622b1b6185a07621a4f8858e37fe29080c384e2&fvd=i3&v=3") format("woff2"), url("https://use.typekit.net/af/e4f93d/00000000000000003b9b03cb/27/d?primer=8c6cdece1802ac03951c30593622b1b6185a07621a4f8858e37fe29080c384e2&fvd=i3&v=3") format("woff"), url("https://use.typekit.net/af/e4f93d/00000000000000003b9b03cb/27/a?primer=8c6cdece1802ac03951c30593622b1b6185a07621a4f8858e37fe29080c384e2&fvd=i3&v=3") format("opentype");
font-style: italic;
font-weight: 300;
font-display: auto;
}
@font-face {
font-family: "brother-1816";
src: url("https://use.typekit.net/af/deeb73/00000000000000003b9b03d0/27/l?primer=8c6cdece1802ac03951c30593622b1b6185a07621a4f8858e37fe29080c384e2&fvd=n5&v=3") format("woff2"), url("https://use.typekit.net/af/deeb73/00000000000000003b9b03d0/27/d?primer=8c6cdece1802ac03951c30593622b1b6185a07621a4f8858e37fe29080c384e2&fvd=n5&v=3") format("woff"), url("https://use.typekit.net/af/deeb73/00000000000000003b9b03d0/27/a?primer=8c6cdece1802ac03951c30593622b1b6185a07621a4f8858e37fe29080c384e2&fvd=n5&v=3") format("opentype");
font-style: normal;
font-weight: 500;
font-display: auto;
}
@font-face {
font-family: "brother-1816";
src: url("https://use.typekit.net/af/f5cf85/00000000000000003b9b03d2/27/l?primer=8c6cdece1802ac03951c30593622b1b6185a07621a4f8858e37fe29080c384e2&fvd=n7&v=3") format("woff2"), url("https://use.typekit.net/af/f5cf85/00000000000000003b9b03d2/27/d?primer=8c6cdece1802ac03951c30593622b1b6185a07621a4f8858e37fe29080c384e2&fvd=n7&v=3") format("woff"), url("https://use.typekit.net/af/f5cf85/00000000000000003b9b03d2/27/a?primer=8c6cdece1802ac03951c30593622b1b6185a07621a4f8858e37fe29080c384e2&fvd=n7&v=3") format("opentype");
font-style: normal;
font-weight: 700;
font-display: auto;
}
:root {
--pageWidth: 894px;
--backgroundColor: #fff;
--colorUtu1: #8b5dcb;
--colorUtu2: #78c8d2;
--colorUtu3: #f8485e;
--colorUtu4: #adcb00;
--colorUtu5: #000;
--colorUtu6: #868686;
--colorUtu7: #b1b1b0;
--colorUtu8: #d9d9d9;
--colorUtu9: #ffffff;
}
html {
font: 120% brother-1816, sans-serif;
box-sizing: border-box;
overflow-y: scroll;
-ms-text-size-adjust: 100%;
-webkit-text-size-adjust: 100%;
margin: 0;
padding: 0;
}
.layout {
background-color: var(--colorUtu8);
padding-right:0;
padding-left:0;
}
.layout-container {
background-color: var(--colorUtu9);
margin: 0 auto;
max-width:100rem;
}
.main-content {
display: flex;
align-items: flex-start;
align-content: space-between;
flex-wrap: wrap;
}
.toc-container {
margin-left: -5em;
margin-right: 1em;
width: 20%;
flex-grow: 1;
position: sticky;
display: block;
border-radius: 15px;
padding: 0.5em;
padding-top: 2em;
padding-bottom: 2em;
background: var(--colorUtu8);
border: 2px solid var(--colorUtu5);
}
.toc-container a {
color: var(--colorUtu5);
text-decoration: none;
}
.toc-container a:hover {
color: var(--colorUtu5);
text-decoration: underline solid var(--colorUtu5);
}
.header a:hover {
color: var(--colorUtu5);
text-decoration: underline solid var(--colorUtu5);
}
.main-header {
}
.main-lecture {
max-width: 80%;
}
.main-content {
flex-grow: 1;
}
@media (max-width:60em) {
.main-content {
display: block;
}
.main-lecture {
max-width: 100%;
}
.toc-container {
margin: 1em auto 1em auto;
padding: 0.5em;
width: 90%;
}
}
.lecture-grid-container {
display: grid;
grid-template-columns: auto auto;
border-top: 1px solid var(--colorUtu5);
border-bottom: 1px solid var(--colorUtu5);
padding: 2px;
align-items: center;
width: 100%;
}
.lecture-grid-container2 {
display: grid;
grid-template-columns: auto;
border-top: 1px solid var(--colorUtu5);
border-bottom: 1px solid var(--colorUtu5);
padding: 2px;
align-items: center;
width: 100%;
}
.lecture-grid-item {
border: 0;
padding: 10px;
font-size: 16px;
text-align: center;
max-width: 100%;
margin: 0 auto;
}
.controls-right button {
margin-left: 0.5em;
}
.controls-left button {
margin-right: 0.5em;
}
.lecture-grid-item2:first-child {
border-right: 2px solid var(--colorUtu8);
}
@media (min-width:50em) {
.layout {
padding-right: 2em;
padding-left: 2em;
}
.main-content {
padding-right: 2.5em;
padding-left: 2.5em;
padding-bottom: 2.5em;
}
}
@media (min-width:60em) {
.layout {
padding-right: 3em;
padding-left: 3em;
}
.main-content {
padding-right: 3.25em;
padding-left: 3.25em;
padding-bottom: 3.25em;
}
}
@media (min-width:80em) {
.layout {
padding-right: 4em;
padding-left: 4em;
}
.main-content {
padding-right: 4em;
padding-left: 4em;
padding-bottom: 4em;
}
}
article,
aside,
details,
figcaption,
figure,
footer,
header,
main,
menu,
nav,
section,
summary {
display: block;
}
audio,
canvas,
progress,
video {
display: inline-block;
}
audio:not([controls]) {
display: none;
height: 0;
}
progress {
vertical-align: baseline;
}
[hidden],
template {
display: none;
}
a {
background-color: transparent;
-webkit-text-decoration-skip: objects;
}
a:active,
a:hover {
outline-width: 0;
}
abbr[title] {
border-bottom: none;
text-decoration: underline;
text-decoration: underline dotted;
}
b,
strong {
font-weight: inherit;
font-weight: bolder;
}
dfn {
font-style: italic;
}
h1 {
font-size: 2em;
margin: 0.67em 0;
}
mark {
background-color: #ff0;
color: #000;
}
small {
font-size: 80%;
}
sub,
sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}
sub {
bottom: -0.25em;
}
sup {
top: -0.5em;
}
img {
border-style: none;
}
svg:not(:root) {
overflow: hidden;
}
code,
kbd,
pre,
samp {
font-family: monospace, monospace;
font-size: 1em;
}
figure {
margin: 1em 40px;
}
hr {
box-sizing: content-box;
height: 0;
overflow: visible;
}
button,
input,
optgroup,
select,
textarea {
font: inherit;
margin: 0;
}
optgroup {
font-weight: 700;
}
button,
input {
overflow: visible;
}
button,
select {
text-transform: none;
}
[type="reset"],
[type="submit"],
button,
html [type="button"] {
-webkit-appearance: button;
}
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner,
button::-moz-focus-inner {
border-style: none;
padding: 0;
}
[type="button"]:-moz-focusring,
[type="reset"]:-moz-focusring,
[type="submit"]:-moz-focusring,
button:-moz-focusring {
outline: 1px dotted ButtonText;
}
fieldset {
border: 1px solid silver;
margin: 0 2px;
padding: 0.35em 0.625em 0.75em;
}
legend {
box-sizing: border-box;
color: inherit;
display: table;
max-width: 100%;
padding: 0;
white-space: normal;
}
textarea {
overflow: auto;
}
[type="checkbox"],
[type="radio"] {
box-sizing: border-box;
padding: 0;
}
[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
height: auto;
}
[type="search"] {
-webkit-appearance: textfield;
outline-offset: -2px;
}
[type="search"]::-webkit-search-cancel-button,
[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
::-webkit-input-placeholder {
color: inherit;
opacity: 0.54;
}
::-webkit-file-upload-button {
-webkit-appearance: button;
font: inherit;
}
* {
box-sizing: inherit;
}
*:before {
box-sizing: inherit;
}
*:after {
box-sizing: inherit;
}
body {
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
margin: 0;
padding: 0;
color: hsla(0, 0%, 0%, 0.8);
font-weight: normal;
word-wrap: break-word;
font-kerning: normal;
-moz-font-feature-settings: "kern", "liga", "clig", "calt";
-ms-font-feature-settings: "kern", "liga", "clig", "calt";
-webkit-font-feature-settings: "kern", "liga", "clig", "calt";
font-feature-settings: "kern", "liga", "clig", "calt";
}
img {
max-width: 100%;
margin-left: 0;
margin-right: 0;
margin-top: 0;
padding-bottom: 0;
padding-left: 0;
padding-right: 0;
padding-top: 0;
margin-bottom: 1.45rem;
}
h1 {
margin-left: 0;
margin-right: 0;
margin-top: 0;
padding-bottom: 0;
padding-left: 0;
padding-right: 0;
padding-top: 0;
margin-bottom: 1.45rem;
color: inherit;
font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen,
Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;
font-weight: bold;
text-rendering: optimizeLegibility;
font-size: 2.25rem;
line-height: 1.1;
}
h2 {
margin-left: 0;
margin-right: 0;
margin-top: 0;
padding-bottom: 0;
padding-left: 0;
padding-right: 0;
padding-top: 0;
margin-bottom: 1.45rem;
color: inherit;
font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen,
Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;
font-weight: bold;
text-rendering: optimizeLegibility;
font-size: 1.62671rem;
line-height: 1.1;
}
h3 {
margin-left: 0;
margin-right: 0;
margin-top: 0;
padding-bottom: 0;
padding-left: 0;
padding-right: 0;
padding-top: 0;
margin-bottom: 1.45rem;
color: inherit;
font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen,
Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;
font-weight: bold;
text-rendering: optimizeLegibility;
font-size: 1.38316rem;
line-height: 1.1;
}
h4 {
margin-left: 0;
margin-right: 0;
margin-top: 0;
padding-bottom: 0;
padding-left: 0;
padding-right: 0;
padding-top: 0;
margin-bottom: 1.45rem;
color: inherit;
font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen,
Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;
font-weight: bold;
text-rendering: optimizeLegibility;
font-size: 1rem;
line-height: 1.1;
}
h5 {
margin-left: 0;
margin-right: 0;
margin-top: 0;
padding-bottom: 0;
padding-left: 0;
padding-right: 0;
padding-top: 0;
margin-bottom: 1.45rem;
color: inherit;
font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen,
Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;
font-weight: bold;
text-rendering: optimizeLegibility;
font-size: 0.85028rem;
line-height: 1.1;
}
h6 {
margin-left: 0;
margin-right: 0;
margin-top: 0;
padding-bottom: 0;
padding-left: 0;
padding-right: 0;
padding-top: 0;
margin-bottom: 1.45rem;
color: inherit;
font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen,
Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;
font-weight: bold;
text-rendering: optimizeLegibility;
font-size: 0.78405rem;
line-height: 1.1;
}
hgroup {
margin-left: 0;
margin-right: 0;
margin-top: 0;
padding-bottom: 0;
padding-left: 0;
padding-right: 0;
padding-top: 0;
margin-bottom: 1.45rem;
}
ul {
margin-left: 1.45rem;
margin-right: 0;
margin-top: 0;
padding-bottom: 0;
padding-left: 0;
padding-right: 0;
padding-top: 0;
margin-bottom: 1.45rem;
list-style-position: outside;
list-style-image: none;
}
ol {
margin-left: 1.45rem;
margin-right: 0;
margin-top: 0;
padding-bottom: 0;
padding-left: 0;
padding-right: 0;
padding-top: 0;
margin-bottom: 1.45rem;
list-style-position: outside;
list-style-image: none;
}
dl {
margin-left: 0;
margin-right: 0;
margin-top: 0;
padding-bottom: 0;
padding-left: 0;
padding-right: 0;
padding-top: 0;
margin-bottom: 1.45rem;
}
dd {
margin-left: 0;
margin-right: 0;
margin-top: 0;
padding-bottom: 0;
padding-left: 0;
padding-right: 0;
padding-top: 0;
margin-bottom: 1.45rem;
}
p {
margin-left: 0;
margin-right: 0;
margin-top: 0;
padding-bottom: 0;
padding-left: 0;
padding-right: 0;
padding-top: 0;
margin-bottom: 1.45rem;
}
figure {
margin-left: 0;
margin-right: 0;
margin-top: 0;
padding-bottom: 0;
padding-left: 0;
padding-right: 0;
padding-top: 0;
margin-bottom: 1.45rem;
}
pre {
margin-left: 0;
margin-right: 0;
margin-top: 0;
margin-bottom: 1.45rem;
font-size: 0.85rem;
line-height: 1.42;
background: hsla(0, 0%, 0%, 0.04);
border-radius: 3px;
overflow: auto;
word-wrap: normal;
padding: 1.45rem;
}
table {
margin-left: 0;
margin-right: 0;
margin-top: 0;
padding-bottom: 0;
padding-left: 0;
padding-right: 0;
padding-top: 0;
margin-bottom: 1.45rem;
font-size: 1rem;
line-height: 1.45rem;
border-collapse: collapse;
width: 100%;
}
fieldset {
margin-left: 0;
margin-right: 0;
margin-top: 0;
padding-bottom: 0;
padding-left: 0;
padding-right: 0;
padding-top: 0;
margin-bottom: 1.45rem;
}
blockquote {
margin-left: 1.45rem;
margin-right: 1.45rem;
margin-top: 0;
padding-bottom: 0;
padding-left: 0;
padding-right: 0;
padding-top: 0;
margin-bottom: 1.45rem;
}
form {
margin-left: 0;
margin-right: 0;
margin-top: 0;
padding-bottom: 0;
padding-left: 0;
padding-right: 0;
padding-top: 0;
margin-bottom: 1.45rem;
}
noscript {
margin-left: 0;
margin-right: 0;
margin-top: 0;
padding-bottom: 0;
padding-left: 0;
padding-right: 0;
padding-top: 0;
margin-bottom: 1.45rem;
}
iframe {
margin-left: 0;
margin-right: 0;
margin-top: 0;
padding-bottom: 0;
padding-left: 0;
padding-right: 0;
padding-top: 0;
margin-bottom: 1.45rem;
width: 100%;
min-height: 90vh;
}
hr {
margin-left: 0;
margin-right: 0;
margin-top: 0;
padding-bottom: 0;
padding-left: 0;
padding-right: 0;
padding-top: 0;
margin-bottom: calc(1.45rem - 1px);
background: hsla(0, 0%, 0%, 0.2);
border: none;
height: 1px;
}
address {
margin-left: 0;
margin-right: 0;
margin-top: 0;
padding-bottom: 0;
padding-left: 0;
padding-right: 0;
padding-top: 0;
margin-bottom: 1.45rem;
}
b {
font-weight: bold;
}
strong {
font-weight: bold;
}
dt {
font-weight: bold;
}
th {
font-weight: bold;
}
li {
margin-bottom: calc(1.45rem / 2);
}
ol li {
padding-left: 0;
}
ul li {
padding-left: 0;
}
li > ol {
margin-left: 1.45rem;
margin-bottom: calc(1.45rem / 2);
margin-top: calc(1.45rem / 2);
}
li > ul {
margin-left: 1.45rem;
margin-bottom: calc(1.45rem / 2);
margin-top: calc(1.45rem / 2);
}
blockquote *:last-child {
margin-bottom: 0;
}
li *:last-child {
margin-bottom: 0;
}
p *:last-child {
margin-bottom: 0;
}
li > p {
margin-bottom: calc(1.45rem / 2);
}
code {
font-size: 0.85rem;
line-height: 1.45rem;
}
kbd {
font-size: 0.85rem;
line-height: 1.45rem;
}
samp {
font-size: 0.85rem;
line-height: 1.45rem;
}
abbr {
border-bottom: 1px dotted hsla(0, 0%, 0%, 0.5);
cursor: help;
}
acronym {
border-bottom: 1px dotted hsla(0, 0%, 0%, 0.5);
cursor: help;
}
abbr[title] {
border-bottom: 1px dotted hsla(0, 0%, 0%, 0.5);
cursor: help;
text-decoration: none;
}
thead {
text-align: left;
}
td,
th {
text-align: left;
border-bottom: 1px solid hsla(0, 0%, 0%, 0.12);
font-feature-settings: "tnum";
-moz-font-feature-settings: "tnum";
-ms-font-feature-settings: "tnum";
-webkit-font-feature-settings: "tnum";
padding-left: 0.96667rem;
padding-right: 0.96667rem;
padding-top: 0.725rem;
padding-bottom: calc(0.725rem - 1px);
}
th:first-child,
td:first-child {
padding-left: 0;
}
th:last-child,
td:last-child {
padding-right: 0;
}
tt,
code {
background-color: hsla(0, 0%, 0%, 0.04);
border-radius: 3px;
font-family: "SFMono-Regular", Consolas, "Roboto Mono", "Droid Sans Mono",
"Liberation Mono", Menlo, Courier, monospace;
padding: 0;
padding-top: 0.2em;
padding-bottom: 0.2em;
}
pre code {
background: none;
line-height: 1.42;
}
code:before,
code:after,
tt:before,
tt:after {
letter-spacing: -0.2em;
content: " ";
}
pre code:before,
pre code:after,
pre tt:before,
pre tt:after {
content: "";
}
@media only screen and (max-width: 480px) {
html {
font-size: 100%;
}
}
header, footer {
padding-top: 0.6rem;
padding-bottom: 0.6rem;
}
footer {
background: var(--colorUtu5);
color: var(--colorUtu9);
}
.header, .footer {
font-size: 87.4975%;
padding-left: 3.25rem;
padding-bottom: 0.875rem;
padding-right: 3.25rem;
padding-top: 0.875rem;
}
.header-content {
width: 100%;
border-bottom: 1px solid var(--colorUtu8);
display: flex;
flex-wrap: wrap;
align-items: flex-end;
justify-content: space-between;
}
.footer-content {
width: 100%;
display: flex;
flex-wrap: wrap;
align-items: flex-start;
justify-content: space-between;
}
.header nav, .footer nav {
display: block;
flex: 1 0 auto;
padding-bottom: 0.5em;
}
.footer nav {
display: block;
flex: 1 0 auto;
padding-top: 0.5em;
padding-bottom: 0;
}
.header ul, .footer ul {
float: right;
margin: 0 -0.5em;
padding: 0;
display: flex;
}
.header li, .footer li {
list-style: none;
padding: 0;
margin: 0 1em;
text-transform: uppercase;
font-weight: bold;
}
.header a {
color: var(--colorUtu5);
text-decoration: none;
}
.footer a {
color: var(--colorUtu9);
text-decoration: none;
}
.header a:hover {
color: var(--colorUtu5);
text-decoration: underline solid var(--colorUtu5);
}
.header .active {
color: var(--colorUtu5);
text-decoration: underline solid var(--colorUtu5);
}
.footer a:hover {
color: var(--colorUtu9);
text-decoration: underline solid var(--colorUtu9);
}
.sitebranding {
width: 14.040rem;
height: 3.967rem;
flex: 0 0 auto;
flex-shrink: 0;
margin: 0;
margin-bottom: 1em;
}
@media (min-width:50em) {
.header, .footer {
font-size: 91.665%;
padding-left: 3.1rem;
padding-bottom: 0.94rem;
padding-right: 3.1rem;
padding-top: 0.94rem;
}
.sitebranding {
width: 15.100rem;
height: 4.267rem;
}
}
@media (min-width:60em) {
.header, .footer {
font-size: 87.4975%;
padding-left: 4rem;
padding-bottom: 1.1rem;
padding-right: 4rem;
padding-top: 1.1rem;
}
.sitebranding {
width: 16.400rem;
height: 4.634rem;
}
}
@media (min-width:80em) {
.header, .footer {
font-size: 83.33%;
padding-left: 5rem;
padding-bottom: 1.25rem;
padding-right: 5rem;
padding-top: 1.25rem;
}
.sitebranding {
width: 17.700rem;
height: 5.002rem;
}
}
public/utulogo.png

13 KiB

public/utulogow.png

19.7 KiB

#!/bin/sh
find src > public/report.txt
mvn clean test 2>&1 >> public/report.txt
mvn surefire-report:report
cp target/site/surefire-report.html public/
package fi.utu.tech.ooj.exercise0;
/*
* Literaaliluokka, joka listaa kirjaa liittyvät tietokentät
*/
public enum KirjanTiedot {
NIMI,
KIRJAILIJA,
JULKAISUVUOSI
}
package fi.utu.tech.ooj.exercise0;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
public class Main {
/*
* Kirjoita tähän tehtävän 4 ratkaisu. Rutiinin signatuuria ei saa muuttaa. Aloita tehtävä poistamalla
* kommenttimerkit alla olevan rutiinin rungon ympäriltä.
*/
/*public static ArrayList<String> kysyTietoja(String[] kysyttavat, String lopetusmerkki) {
}*/
/*
* Kirjoita tähän tehtävän 5 ratkaisu. Rutiinin signatuuria ei saa muuttaa. Aloita tehtävä poistamalla
* kommenttimerkit alla olevan rutiinin rungon ympäriltä.
*/
/*public static KirjaKokoelma luoKokoelma(String lopetusmerkki) {
}*/
/**
* Main class.
*
* @param args Command line arguments
*/
public static void main(String[] args) {
/*
* Testin jälkeen alla olevan rivin voi joko kommentoida tai poistaa.
*/
System.out.println("*** Harjoitustyöpohja käynnistyy ***");
//Luo ensin uusi KirjaKokoelma olio, Käytä tehtävän 5 rutiinia
//Sen jälkeen tulosta kokoelma näyttöön käyttämällä tehtävän 6 rutiinia
//Lopuksi hae jokin kirja kokoelmasta käyttäen tehtävän 7 rutiinia
//Tulosta hakutulos. Sen voit tehdä suoraan main-metodissa.
}
}
module fi.utu.tech.ooj.exercise0 {
exports fi.utu.tech.ooj.exercise0;
opens fi.utu.tech.ooj.exercise0;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment