Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 29 additions & 14 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,17 +1,32 @@
target/
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup
pom.xml.next
release.properties
dependency-reduced-pom.xml
buildNumber.properties
.mvn/timing.properties
# https://github.com/takari/maven-wrapper#usage-without-binary-jar
.mvn/wrapper/maven-wrapper.jar
# Compiled class file
*.class

# Eclipse m2e generated files
# Eclipse Core
# Log file
*.log

# BlueJ files
*.ctxt

# Mobile Tools for Java (J2ME)
.mtj.tmp/

# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar

# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
replay_pid*
/bin/

#Eclipse file
.project
# JDT-specific (Eclipse Java Development Tools)
.classpath

#Maven target
/target
4 changes: 4 additions & 0 deletions .settings/org.eclipse.core.resources.prefs
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
eclipse.preferences.version=1
encoding//src/main/java=UTF-8
encoding//src/test/java=UTF-8
encoding/<project>=UTF-8
8 changes: 8 additions & 0 deletions .settings/org.eclipse.jdt.core.prefs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
org.eclipse.jdt.core.compiler.compliance=1.8
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore
org.eclipse.jdt.core.compiler.release=disabled
org.eclipse.jdt.core.compiler.source=1.8
4 changes: 4 additions & 0 deletions .settings/org.eclipse.m2e.core.prefs
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
activeProfiles=
eclipse.preferences.version=1
resolveWorkspaceProjects=true
version=1
695 changes: 674 additions & 21 deletions LICENSE

Large diffs are not rendered by default.

9 changes: 7 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,7 @@
# HelloRefactorQA
Taller gitflow
refactoring-fowler-example
==========================

Java code example to teach basic refactoring concepts.



82 changes: 82 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>ubu.gii</groupId>
<artifactId>javaAppFowler</artifactId>
<version>1.0-SNAPSHOT</version>

<name>Refactoring Fowler Example</name>

<url>https://github.com/clopezno/refactoring-fowler-example</url>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<junit-jupiter.version>5.9.1</junit-jupiter.version>
<jacoco-maven-plugin.version>0.8.8</jacoco-maven-plugin.version>
<maven-surefire-plugin.version>3.0.0-M7</maven-surefire-plugin.version>

</properties>

<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>${junit-jupiter.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>${junit-jupiter.version}</version>
<scope>test</scope>
</dependency>
</dependencies>

<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${jacoco-maven-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven-surefire-plugin.version}</version>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<executions>
<execution>
<id>prepare-agent</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>report</id>
<phase>test</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>

</project>
26 changes: 26 additions & 0 deletions src/main/java/ubu/gii/ChildrenPrice.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package ubu.gii;

public class ChildrenPrice extends Price {

@Override
public int getPriceCode() {
return Movie.CHILDRENS;
}

@Override
public double getCharge(int daysRented) {
double result=1.5;

if (daysRented > 3) {
result += (daysRented - 3) * 1.5;
}

return result;
}

@Override
public int getFrequentRenterPoint(int daysRented) {
return 1;
}

}
86 changes: 86 additions & 0 deletions src/main/java/ubu/gii/Customer.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
package ubu.gii;

/**
* Tema Refactorizaciones
*
* Ejemplo de aplicaci�n de refactorizaciones. Actualizado para colecciones gen�ricas de java 1.5
*
* @author M. Fowler y <A HREF="mailto:clopezno@ubu.es">Carlos L�pez</A>
* @version 1.1
* @see java.io.File
*
*/
import java.util.*;

public class Customer {
private String _name;
private List<Rental> _rentals;

public Customer(String name) {
_name = name;
_rentals = new ArrayList<Rental>();

};

public void addRental(Rental arg) {
_rentals.add(arg);
}

public String getName() {
return _name;
};

public String statement() {
return statement(false);
}

public String statement(boolean isHtml) {
double totalAmount = 0;
int frequentRenterPoints = 0;
Iterator<Rental> rentals = _rentals.iterator();
String result = null;

if (!isHtml) {
result = "Rental Record for " + getName() + "\n";
} else {
result = "<h1>Rental Record for " + getName() + "</h1>\n";
}

while (rentals.hasNext()) {
double thisAmount = 0;
Rental alquilerActual = rentals.next();
thisAmount = alquilerActual.getMovie().determineAmountsForEachMovie(alquilerActual, thisAmount);
frequentRenterPoints = alquilerActual.addBonusForTwoDayNewReleaseRental(frequentRenterPoints, this);
result = showFiguresForThisRental(result, thisAmount, alquilerActual, isHtml);
totalAmount += thisAmount;
}
return addFooterLines(totalAmount, frequentRenterPoints, result, isHtml);
}

private String addFooterLines(double totalAmount, int frequentRenterPoints, String result, boolean isHtml) {
if (isHtml) {
result += "<p>Amount owed is <em>" + String.valueOf(totalAmount) + "</em></p>\n";
result += "<p>You earned <em>" + String.valueOf(frequentRenterPoints) +
"</em> frequent renter points</p>";
} else {
// add footer lines
result += "Amount owed is " + String.valueOf(totalAmount) + "\n";
result += "You earned " + String.valueOf(frequentRenterPoints) +
" frequent renter points";
}
return result;
}

private String showFiguresForThisRental(String result, double thisAmount, Rental each, boolean isHtml) {
if (isHtml) {
result += "<p>" + each.getMovie().getTitle() + " - " +
String.valueOf(thisAmount) + "</p>\n";
} else {
// show figures for this rental
result += "\t" + each.getMovie().getTitle() + "\t" +
String.valueOf(thisAmount) + "\n";
}
return result;
}

}
63 changes: 63 additions & 0 deletions src/main/java/ubu/gii/Movie.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
package ubu.gii;
/**
* Tema Refactorizaciones
*
* Ejemplo de aplicación de refactorizaciones. Actualizado para colecciones
* genéricas de java 1.5.
*
* @author M. Fowler y <A HREF="mailto:clopezno@ubu.es">Carlos López</A>
* @version 1.1
* @see java.io.File
*
*/

public class Movie {
public static final int CHILDRENS = 2;
public static final int REGULAR = 0;
public static final int NEW_RELEASE = 1;

private String _title;
private Price _priceCode;

public Movie(String title, int priceCode) {
_title = title;
setPriceCode(priceCode);
}

public Price getPriceCode() {
return _priceCode;
}

public void setPriceCode(int arg) {
switch (arg) {
case REGULAR:
_priceCode = new RegularPrice();
break;
case CHILDRENS:
_priceCode = new ChildrenPrice();
break;
case NEW_RELEASE:
_priceCode = new NewReleasePrice();
break;
default:
throw new IllegalArgumentException("No se reconoce el PriceCode especificado");
}
}

public String getTitle() {
return _title;
}

double determineAmountsForEachMovie(Rental rental, double thisAmount) {

if (rental.getMovie().getPriceCode() instanceof RegularPrice) {
thisAmount = new RegularPrice().getCharge(rental.getDaysRented());
} else if (rental.getMovie().getPriceCode() instanceof NewReleasePrice) {
thisAmount = new NewReleasePrice().getCharge(rental.getDaysRented());
} else if (rental.getMovie().getPriceCode() instanceof ChildrenPrice) {
thisAmount = new ChildrenPrice().getCharge(rental.getDaysRented());
}

return thisAmount;
}
}
27 changes: 27 additions & 0 deletions src/main/java/ubu/gii/NewReleasePrice.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package ubu.gii;

public class NewReleasePrice extends Price {

@Override
public int getPriceCode() {
return Movie.NEW_RELEASE;
}

@Override
public double getCharge(int daysRented) {
int result = daysRented * 3;
return result;
}

@Override
public int getFrequentRenterPoint(int daysRented) {
int frequentRenterPoints=1;
// Añadir un bonus si la pelicula es de tipo "NEW RELEASE" y ha sido alquilada durante más de un día
if (getPriceCode() == Movie.NEW_RELEASE && daysRented >= 2) {
frequentRenterPoints++;
}
return frequentRenterPoints;
}


}
9 changes: 9 additions & 0 deletions src/main/java/ubu/gii/Price.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package ubu.gii;

public abstract class Price {
public abstract int getPriceCode();

public abstract double getCharge(int daysRented);

public abstract int getFrequentRenterPoint(int daysRented);
}
Loading