Skip to content

Commit

Permalink
Merge branch 'master' of github.com:oskopek/gymy-seminar
Browse files Browse the repository at this point in the history
  • Loading branch information
oskopek committed Sep 11, 2014
2 parents 3d3151a + 025d0d1 commit a8d9d18
Show file tree
Hide file tree
Showing 35 changed files with 1,182 additions and 145 deletions.
26 changes: 21 additions & 5 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,10 @@
<version>0.2.0-SNAPSHOT</version>
<packaging>jar</packaging>

<prerequisites>
<maven>3.0.0</maven>
</prerequisites>

<licenses>
<license>
<name>Apache License, Version 2.0</name>
Expand Down Expand Up @@ -55,6 +59,18 @@
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12-beta-1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>1.9.5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.2</version>
</dependency>
</dependencies>

Expand Down Expand Up @@ -87,7 +103,7 @@
<plugin>
<groupId>org.eluder.coveralls</groupId>
<artifactId>coveralls-maven-plugin</artifactId>
<version>2.1.0</version>
<version>2.2.0</version>
<configuration>
<!--suppress MavenModelInspection -->
<repoToken>${env.COVERALLS_TOKEN}</repoToken>
Expand All @@ -105,7 +121,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<version>2.5</version>
<configuration>
<archive>
<manifest>
Expand All @@ -125,7 +141,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.1</version>
<version>2.8</version>
<executions>
<execution>
<id>copy-dependencies</id>
Expand All @@ -143,7 +159,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.3</version>
<version>2.4.1</version>
<executions>
<execution>
<phase>package</phase>
Expand All @@ -166,7 +182,7 @@
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<version>1.3.2</version>
<executions>
<execution>
<goals>
Expand Down
28 changes: 20 additions & 8 deletions src/main/java/sk/gymy/seminar/app/SeminarApp.java
Original file line number Diff line number Diff line change
Expand Up @@ -42,19 +42,20 @@
import sk.gymy.seminar.swingui.SeminarPanel;

import java.io.File;
import java.io.IOException;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class SeminarApp extends CommonApp {

public static final String SOLVER_CONFIG
= "sk/gymy/seminar/solver/seminarSolverConfig.xml";
public static final String SOLVER_CONFIG = "sk/gymy/seminar/solver/seminarSolverConfig.xml";

public static void main(String[] args) {
public static void main(String[] args) throws IOException {
prepareSwingEnvironment();
prepareDataDirStructure();
prepareDataDirStructure(Paths.get("").toAbsolutePath().toFile());
new SeminarApp().init();
}

Expand Down Expand Up @@ -141,17 +142,28 @@ protected AbstractSolutionExporter createSolutionExporter() {
return new SeminarExporter();
}

private static void prepareDataDirStructure() {
String dataDirPath = "data/" + SeminarDao.dataDirName + "/";
/**
* Constructs a tree of data directories inside the base directory.
*
* SeminarApp makes no assumptions about deleting them afterwards.
*
* @param baseDir must be a directory and must exists
*/
protected static void prepareDataDirStructure(File baseDir) throws IOException {
logger.info("BaseDir is: {}", baseDir);
if (!baseDir.exists() || !baseDir.isDirectory()) {
logger.error("BaseDir doesn't exist or isn't a directory!");
throw new IllegalArgumentException("BaseDir doesn't exist or isn't a directory");
}
String dataDirPath = baseDir.getPath() + "/data/" + SeminarDao.dataDirName + "/";
List<String> dataDirs = Arrays.asList("import", "export", "solved", "unsolved");
File dir;

for(String curDataDir : dataDirs) {
dir = new File(dataDirPath + curDataDir);
if (!dir.exists()) {
logger.info("Data directory {} doesn't exist, creating it.", dir.toString());
if (!dir.mkdirs()) {
throw new IllegalStateException("Failed to create dataDir folders: " + dir.toString());
throw new IOException("Failed to recursively create data directory: " + dir.toString());
}
}
}
Expand Down
9 changes: 3 additions & 6 deletions src/main/java/sk/gymy/seminar/app/SeminarBenchmarkApp.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,9 @@ public static void main(String[] args) {

public SeminarBenchmarkApp() {
super(
new ArgOption("default",
"/sk/gymy/seminar/benchmark/seminarBenchmarkConfig.xml"),
new ArgOption("stepLimit",
"/sk/gymy/seminar/benchmark/seminarStepLimitBenchmarkConfig.xml"),
new ArgOption("scoreDirector",
"/sk/gymy/seminar/benchmark/seminarScoreDirectorBenchmarkConfig.xml")
new ArgOption("default", "sk/gymy/seminar/benchmark/seminarBenchmarkConfig.xml"),
new ArgOption("stepLimit", "sk/gymy/seminar/benchmark/seminarStepLimitBenchmarkConfig.xml"),
new ArgOption("scoreDirector", "sk/gymy/seminar/benchmark/seminarScoreDirectorBenchmarkConfig.xml")
);
}

Expand Down
6 changes: 5 additions & 1 deletion src/main/java/sk/gymy/seminar/app/SeminarHelloWorld.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,10 @@
public class SeminarHelloWorld {

public static void main(String[] args) {
System.out.println(solveHelloWorld());
}

public static String solveHelloWorld() {
// Build the Solver
SolverFactory solverFactory = SolverFactory.createFromXmlResource(
"sk/gymy/seminar/solver/seminarSolverConfig.xml");
Expand All @@ -44,7 +48,7 @@ public static void main(String[] args) {
Groups solved5Seminars = (Groups) solver.getBestSolution();

// Display the result
System.out.print("\nSolved 5 Seminars:\n" + toDisplayString(solved5Seminars));
return "\nSolved 5 Seminars:\n" + toDisplayString(solved5Seminars);
}

public static String toDisplayString(Groups groups) {
Expand Down
21 changes: 21 additions & 0 deletions src/main/java/sk/gymy/seminar/domain/Group.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,15 @@ public class Group extends AbstractPersistable {

private int index;

public Group() {
super();
}

public Group(int index) {
super();
this.index = index;
}

public int getIndex() {
return index;
}
Expand All @@ -37,4 +46,16 @@ public String toString() {
return "G" + index;
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Group group = (Group) o;
return index == group.index;
}

@Override
public int hashCode() {
return index;
}
}
5 changes: 5 additions & 0 deletions src/main/java/sk/gymy/seminar/domain/Groups.java
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,11 @@ public void setScore(HardSoftScore score) {
this.score = score;
}

@Override
public String toString() {
return "Groups{name=" + name + ", score=" + score + ", seminarList=" + seminarList + "}";
}

// ************************************************************************
// Complex methods
// ************************************************************************
Expand Down
75 changes: 75 additions & 0 deletions src/main/java/sk/gymy/seminar/domain/Person.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
/*
* Copyright 2014 Ondrej Skopek
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package sk.gymy.seminar.domain;

import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.optaplanner.examples.common.domain.AbstractPersistable;

public class Person extends AbstractPersistable {

private int index;
private String name;

public Person() {
super();
}

public Person(int index, String name) {
super();
this.index = index;
this.name = name;
}

public int getIndex() {
return index;
}

public void setIndex(int index) {
this.index = index;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

@Override
public String toString() {
return getName();
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;

Person person = (Person) o;
return new EqualsBuilder()
.append(getName(), person.getName())
.append(getIndex(), person.getIndex())
.isEquals();
}

@Override
public int hashCode() {
return new HashCodeBuilder().append(name).append(index).toHashCode();
}
}
37 changes: 37 additions & 0 deletions src/main/java/sk/gymy/seminar/domain/Seminar.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@
package sk.gymy.seminar.domain;

import com.thoughtworks.xstream.annotations.XStreamAlias;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.optaplanner.core.api.domain.entity.PlanningEntity;
import org.optaplanner.core.api.domain.variable.PlanningVariable;
import org.optaplanner.examples.common.domain.AbstractPersistable;
Expand All @@ -40,6 +42,20 @@ public class Seminar extends AbstractPersistable {
//planning variable
private Group group;

public Seminar() {
super();
}

public Seminar(int index, String name, boolean locked, Teacher teacher, List<Student> students, Group group) {
super();
this.index = index;
this.name = name;
this.locked = locked;
this.teacher = teacher;
this.students = students;
this.group = group;
}

@PlanningVariable(valueRangeProviderRefs = {"groupRange"}, strengthWeightFactoryClass = GroupStrengthWeightFactory.class)
public Group getGroup() {
return group;
Expand Down Expand Up @@ -94,4 +110,25 @@ public String toString() {
return name + ": " + group;
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;

Seminar seminar = (Seminar) o;

return new EqualsBuilder() // do not append Group!
.append(getIndex(), seminar.getIndex())
.append(getName(), seminar.getName())
.append(getStudents(), seminar.getStudents())
.append(getTeacher(), seminar.getTeacher())
.append(isLocked(), seminar.isLocked())
.isEquals();
}

@Override
public int hashCode() {
return new HashCodeBuilder().append(index).append(name) // do not append Group!
.append(students).append(teacher).append(locked).toHashCode();
}
}
27 changes: 5 additions & 22 deletions src/main/java/sk/gymy/seminar/domain/Student.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,33 +17,16 @@
package sk.gymy.seminar.domain;

import com.thoughtworks.xstream.annotations.XStreamAlias;
import org.optaplanner.examples.common.domain.AbstractPersistable;

@XStreamAlias("Student")
public class Student extends AbstractPersistable {
public class Student extends Person {

private int index;
private String name;

public int getIndex() {
return index;
}

public void setIndex(int index) {
this.index = index;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
public Student() {
super();
}

@Override
public String toString() {
return getName();
public Student(int index, String name) {
super(index, name);
}

}

0 comments on commit a8d9d18

Please sign in to comment.