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
26 changes: 23 additions & 3 deletions src/main/java/org/example/GenerateExample.java
Original file line number Diff line number Diff line change
@@ -1,17 +1,37 @@
package org.example;


import org.example.classes.BinaryTreeNode;
import org.example.classes.Cart;
import org.example.classes.Example;
import org.example.classes.PrimitiveExample;
import org.example.classes.Product;
import org.example.classes.Rectangle;
import org.example.classes.Shape;
import org.example.classes.Triangle;
import org.example.generator.Generator;
import org.example.generator.NotGeneratableClassException;

public class GenerateExample {
public static void main(String[] args) {
var gen = new Generator();
try {
Object generated = gen.generateValueOfType(Example.class);
System.out.println(generated);
System.out.println(gen.generateValueOfType(Example.class));
System.out.println(gen.generateValueOfType(Cart.class));
System.out.println(gen.generateValueOfType(BinaryTreeNode.class));
System.out.println(gen.generateValueOfType(Product.class));
System.out.println(gen.generateValueOfType(Rectangle.class));
System.out.println(gen.generateValueOfType(Shape.class));
System.out.println(gen.generateValueOfType(Triangle.class));
System.out.println(gen.generateValueOfType(PrimitiveExample.class));

try {
System.out.println(gen.generateValueOfType(GenerateExample.class));
} catch (NotGeneratableClassException e) {
System.err.println(e.getMessage());
}
} catch (Throwable e) {
throw new RuntimeException(e);
}
}
}
}
12 changes: 12 additions & 0 deletions src/main/java/org/example/classes/BinaryTreeNode.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package org.example.classes;

import org.example.generator.Generatable;

@Generatable
public class BinaryTreeNode {
private Integer data;
private BinaryTreeNode left;
Expand Down Expand Up @@ -30,4 +33,13 @@ public void setLeft(BinaryTreeNode left) {
public void setRight(BinaryTreeNode right) {
this.right = right;
}

@Override
public String toString() {
return "BinaryTreeNode{" +
"data=" + data +
", left=" + left +
", right=" + right +
'}';
}
}
12 changes: 11 additions & 1 deletion src/main/java/org/example/classes/Cart.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
package org.example.classes;

import org.example.generator.Generatable;

import java.util.List;

@Generatable
public class Cart {
private List<Product> items;

Expand All @@ -17,5 +20,12 @@ public void setItems(List<Product> items) {
this.items = items;
}

@Override
public String toString() {
return "Cart{" +
"items=" + items +
'}';
}

// Конструктор, методы добавления и удаления товаров, геттеры и другие методы
}
}
11 changes: 9 additions & 2 deletions src/main/java/org/example/classes/Example.java
Original file line number Diff line number Diff line change
@@ -1,14 +1,21 @@
package org.example.classes;

import org.example.generator.Generatable;

import java.util.Arrays;

@Generatable
public class Example {
int i;
int[] ii;

public Example(int i) {
public Example(int i, int[] ii) {
this.i = i;
this.ii = ii;
}

@Override
public String toString() {
return "Example(" + i + ")";
return "Example(" + i + ", " + Arrays.toString(ii) + ")";
}
}
71 changes: 71 additions & 0 deletions src/main/java/org/example/classes/PrimitiveExample.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
package org.example.classes;

import org.example.generator.Generatable;

@Generatable
public class PrimitiveExample {
// Primitive types
private byte byteValue;
private short shortValue;
private int intValue;
private long longValue;
private float floatValue;
private double doubleValue;
private char charValue;
private boolean booleanValue;

// Primitive wrapper types
private Byte byteWrapper;
private Short shortWrapper;
private Integer intWrapper;
private Long longWrapper;
private Float floatWrapper;
private Double doubleWrapper;
private Character charWrapper;
private Boolean booleanWrapper;

public PrimitiveExample(byte byteValue, short shortValue, int intValue, long longValue,
float floatValue, double doubleValue, char charValue, boolean booleanValue,
Byte byteWrapper, Short shortWrapper, Integer intWrapper, Long longWrapper,
Float floatWrapper, Double doubleWrapper, Character charWrapper, Boolean booleanWrapper) {
this.byteValue = byteValue;
this.shortValue = shortValue;
this.intValue = intValue;
this.longValue = longValue;
this.floatValue = floatValue;
this.doubleValue = doubleValue;
this.charValue = charValue;
this.booleanValue = booleanValue;
this.byteWrapper = byteWrapper;
this.shortWrapper = shortWrapper;
this.intWrapper = intWrapper;
this.longWrapper = longWrapper;
this.floatWrapper = floatWrapper;
this.doubleWrapper = doubleWrapper;
this.charWrapper = charWrapper;
this.booleanWrapper = booleanWrapper;
}

@Override
public String toString() {
return "PrimitiveExample{" +
"byteValue=" + byteValue +
", shortValue=" + shortValue +
", intValue=" + intValue +
", longValue=" + longValue +
", floatValue=" + floatValue +
", doubleValue=" + doubleValue +
", charValue=" + charValue +
", booleanValue=" + booleanValue +
", byteWrapper=" + byteWrapper +
", shortWrapper=" + shortWrapper +
", intWrapper=" + intWrapper +
", longWrapper=" + longWrapper +
", floatWrapper=" + floatWrapper +
", doubleWrapper=" + doubleWrapper +
", charWrapper=" + charWrapper +
", booleanWrapper=" + booleanWrapper +
'}';
}
}

8 changes: 7 additions & 1 deletion src/main/java/org/example/classes/Product.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package org.example.classes;

import org.example.generator.Generatable;

@Generatable
public class Product {
private String name;
private double price;
Expand Down Expand Up @@ -42,7 +45,10 @@ public boolean equals(Object obj) {

@Override
public String toString() {
return super.toString();
return "Product{" +
"name='" + name + '\'' +
", price=" + price +
'}';
}

}
11 changes: 11 additions & 0 deletions src/main/java/org/example/classes/Rectangle.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package org.example.classes;

import org.example.generator.Generatable;

@Generatable
public class Rectangle implements Shape {
private double length;
private double width;
Expand All @@ -18,4 +21,12 @@ public double getArea() {
public double getPerimeter() {
return 2 * (length + width);
}

@Override
public String toString() {
return "Rectangle{" +
"length=" + length +
", width=" + width +
'}';
}
}
5 changes: 4 additions & 1 deletion src/main/java/org/example/classes/Shape.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
package org.example.classes;

import org.example.generator.Generatable;

@Generatable(implementations = {Rectangle.class, Triangle.class})
public interface Shape {
double getArea();
double getPerimeter();
}
}
12 changes: 12 additions & 0 deletions src/main/java/org/example/classes/Triangle.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package org.example.classes;

import org.example.generator.Generatable;

@Generatable
public class Triangle implements Shape {
private double sideA;
private double sideB;
Expand All @@ -21,4 +24,13 @@ public double getArea() {
public double getPerimeter() {
return sideA + sideB + sideC;
}

@Override
public String toString() {
return "Triangle{" +
"sideA=" + sideA +
", sideB=" + sideB +
", sideC=" + sideC +
'}';
}
}
12 changes: 12 additions & 0 deletions src/main/java/org/example/generator/Generatable.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package org.example.generator;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface Generatable {
Class<?>[] implementations() default {};
}
Loading