Skip to content

Commit

Permalink
Add feature pika cry
Browse files Browse the repository at this point in the history
  • Loading branch information
antoine-vinot-sonarsource committed Oct 23, 2023
1 parent d8f5f46 commit 41de436
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 113 deletions.
11 changes: 11 additions & 0 deletions src/main/java/test/Main.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package test;

public class Main {
public static void main(String[] args) {
Pikachu pikachu = Pikachu.newPikachu();
String cry = pikachu.cry();
if (!cry.equals("Pika Pika")) {
throw new IllegalStateException("Pikachu should say 'Pika Pika'");
}
}
}
100 changes: 4 additions & 96 deletions src/main/java/test/Pikachu.java
Original file line number Diff line number Diff line change
@@ -1,109 +1,17 @@
package test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Collection;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.springframework.util.DigestUtils;
import org.springframework.util.StringUtils;

public class Pikachu extends Pokemon {

public Pikachu(String name, String type, int level) {
super(name, type, level);
}

public void attack() {
System.out.println("Pikachu attack!");
}

private static PreparedStatement createStatement(String projectUuid, Collection<String> dispatcherKeys, Connection connection) throws SQLException {
String sql =
"SELECT count(1) FROM properties pp " +
"where pp.user_uuid is not null and (pp.entity_uuid is null or pp.entity_uuid=?) " +
"and (" + repeat("pp.prop_key like ?", " or ", dispatcherKeys.size()) + ")";
PreparedStatement res = connection.prepareStatement(sql);
res.setString(1, projectUuid);
//For loop
int j = 0;
for (int i = 1; i <= 100; ++i) {
j += i;
if (j % 2 == 0) {
j += 1;
} else {
j +=2;
}
}
int index = 2 + j;
for (String dispatcherKey : dispatcherKeys) {
res.setString(index, "PREFIX" + dispatcherKey + ".%");
index++;
}
return res;
}

public void myVulnerability() {
try {
DriverManager.getConnection("jdbc:derby:memory:myDB;create=true", "login", "");
} catch (SQLException e) {
throw new RuntimeException(e);
}
}

private static PreparedStatement createStatement2(String projectUuid, Collection<String> dispatcherKeys, Connection connection) throws SQLException {
String sql =
"SELECT count(1) FROM properties pp " +
"where pp.user_uuid is not null and (pp.entity_uuid is null or pp.entity_uuid=?) " +
"and (" + repeat("pp.prop_key like ?", " or ", dispatcherKeys.size()) + ")";
PreparedStatement res = connection.prepareStatement(sql);
res.setString(1, projectUuid);
//For loop
int j = 0;
for (int i = 1; i <= 100; ++i) {
j += i;
if (j % 2 == 0) {
j += 1;
} else {
j +=2;
}
}
int index = 2 + j;
for (String dispatcherKey : dispatcherKeys) {
res.setString(index, "PREFIX" + dispatcherKey + ".%");
index++;
}
return res;
}

public void myVulnerability2() {
try {
DriverManager.getConnection("jdbc:derby:memory:myDB;create=true", "login", "");
} catch (SQLException e) {
throw new RuntimeException(e);
}
}

public static String repeat(String str, String separator, int repeat) {
if(str == null || separator == null) {
return "";
} else {
// given that repeat(String, int) is quite optimized, better to rely on it than try and splice this into it
String result = "fff";
return removeEnd(result, separator);
}
public static Pikachu newPikachu() {
return new Pikachu("Pikachu", "Electric", 1);
}

public static String removeEnd(String str, String remove) {
if (StringUtils.isEmpty(str) || StringUtils.isEmpty(remove)) {
return str;
}
if (str.endsWith(remove)) {
return str.substring(0, str.length() - remove.length());
}
return str;
public String cry() {
return "Pika Pika";
}

}
22 changes: 5 additions & 17 deletions src/main/java/test/Pokemon.java
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package test;

public abstract class Pokemon {
private String name;
private String type;
private int level;
private final String name;
private final String type;
private final int level;

public Pokemon(String name, String type, int level) {
protected Pokemon(String name, String type, int level) {
this.name = name;
this.type = type;
this.level = level;
Expand All @@ -23,19 +23,7 @@ public int getLevel() {
return level;
}

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

public void setType(String type) {
this.type = type;
}

public void setLevel(int level) {
this.level = level;
}

public String toString() {
return "Pokemon: " + name + " " + type + " " + level;
return "Pokemon: " + getName() + " " + getType() + " " + getLevel();
}
}

0 comments on commit 41de436

Please sign in to comment.