Skip to content

Commit

Permalink
Fix more problems with config model
Browse files Browse the repository at this point in the history
  • Loading branch information
Emil Forslund committed Jan 7, 2016
1 parent bfc63de commit 31248d2
Show file tree
Hide file tree
Showing 21 changed files with 345 additions and 41 deletions.
8 changes: 4 additions & 4 deletions pom.xml
Expand Up @@ -354,19 +354,19 @@
<artifactId>controlsfx</artifactId>
<version>8.40.10</version>
</dependency>

<!-- LICENSE INFORMATION
<!--
LICENSE INFORMATION
FontawesomeFX:8.7
Apache 2 License
http://logging.apache.org/log4j/2.x/license.html
2015-12-04
emifor
-->
<dependency>
<groupId>de.jensd</groupId>
<artifactId>fontawesomefx</artifactId>
<version>8.7</version>
</dependency>
</dependency>-->

<!-- LICENSE INFORMATION
PostgreSQL:9.4-1205-jdbc4
Expand Down
Expand Up @@ -15,8 +15,6 @@
*/
package com.speedment.internal.ui.config;

import com.speedment.config.Document;
import com.speedment.stream.MapStream;
import com.speedment.util.OptionalBoolean;
import java.util.Map;
import java.util.Optional;
Expand Down
85 changes: 78 additions & 7 deletions src/main/java/com/speedment/internal/ui/config/ColumnProperty.java
Expand Up @@ -7,14 +7,25 @@
import static com.speedment.config.db.Column.TYPE_MAPPER;
import com.speedment.config.db.Table;
import com.speedment.config.db.mapper.TypeMapper;
import com.speedment.exception.SpeedmentException;
import com.speedment.internal.ui.config.trait.HasAliasProperty;
import com.speedment.internal.ui.config.trait.HasEnabledProperty;
import com.speedment.internal.ui.config.trait.HasNameProperty;
import com.speedment.internal.ui.property.BooleanPropertyItem;
import com.speedment.internal.ui.property.StringPropertyItem;
import com.speedment.internal.ui.property.TypeMapperPropertyItem;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Stream;
import javafx.beans.binding.Bindings;
import static javafx.beans.binding.Bindings.createObjectBinding;
import javafx.beans.binding.ObjectBinding;
import javafx.beans.property.BooleanProperty;
import javafx.beans.property.Property;
import javafx.beans.property.SimpleObjectProperty;
import javafx.beans.property.StringProperty;
import javafx.util.StringConverter;
import org.controlsfx.control.PropertySheet;

/**
*
Expand All @@ -26,28 +37,88 @@ public final class ColumnProperty extends AbstractChildDocumentProperty<Table>
public ColumnProperty(Table parent, Map<String, Object> data) {
super(parent, data);
}

@Override
public Stream<PropertySheet.Item> getUiVisibleProperties() {
return Stream.of(
HasNameProperty.super.getUiVisibleProperties(),
HasEnabledProperty.super.getUiVisibleProperties(),
HasAliasProperty.super.getUiVisibleProperties(),
Stream.of(
new TypeMapperPropertyItem(
null,
Optional.ofNullable(findTypeMapper())
.map(tm -> (Class) tm.getDatabaseType())
.orElse(findDatabaseType()),
typeMapperObjectProperty(),
"JDBC Type to Java",
"The class that will be used to map types between the database and the generated code."
),
new BooleanPropertyItem(
nullableProperty(),
"Is Nullable",
"If this column can hold 'null'-values or not."
),
new BooleanPropertyItem(
autoIncrementProperty(),
"Is Auto Incrementing",
"If this column will increment automatically for each new entity."
)
)
).flatMap(s -> s);
}

public final BooleanProperty nullableProperty() {
public BooleanProperty nullableProperty() {
return booleanPropertyOf(NULLABLE);
}

public final BooleanProperty autoIncrementProperty() {
public BooleanProperty autoIncrementProperty() {
return booleanPropertyOf(AUTO_INCREMENT);
}

public final StringProperty typeMapperProperty() {
public StringProperty typeMapperProperty() {
return stringPropertyOf(TYPE_MAPPER);
}

public final ObjectBinding<TypeMapper<?, ?>> typeMapperObjectProperty() {
return createObjectBinding(this::findTypeMapper, typeMapperProperty());
public Property<TypeMapper<?, ?>> typeMapperObjectProperty() {
final Property<TypeMapper<?, ?>> pathProperty = new SimpleObjectProperty<>();

Bindings.bindBidirectional(
typeMapperProperty(),
pathProperty,
TYPE_MAPPER_CONVERTER
);

return pathProperty;
}

public final StringProperty databaseTypeProperty() {
public StringProperty databaseTypeProperty() {
return stringPropertyOf(DATABASE_TYPE);
}

public final ObjectBinding<Class<?>> databaseTypeObjectProperty() {
public ObjectBinding<Class<?>> databaseTypeObjectProperty() {
return createObjectBinding(this::findDatabaseType, databaseTypeProperty());
}

private final static StringConverter<TypeMapper<?, ?>> TYPE_MAPPER_CONVERTER = new StringConverter<TypeMapper<?, ?>>() {
@Override
public String toString(TypeMapper<?, ?> typeMapper) {
return typeMapper.getClass().getName();
}

@Override
public TypeMapper<?, ?> fromString(String className) {
try {
@SuppressWarnings("unchecked")
final TypeMapper<?, ?> typeMapper = (TypeMapper<?, ?>) Class.forName(className).newInstance();
return typeMapper;
} catch (final ClassNotFoundException ex) {
throw new SpeedmentException("Could not find type-mapper class: '" + className + "'.", ex);
} catch (InstantiationException ex) {
throw new SpeedmentException("Could not instantiate type-mapper class: '" + className + "'.", ex);
} catch (IllegalAccessException ex) {
throw new SpeedmentException("Could not access type-mapper class: '" + className + "'.", ex);
}
}
};
}
30 changes: 30 additions & 0 deletions src/main/java/com/speedment/internal/ui/config/DbmsProperty.java
Expand Up @@ -8,10 +8,14 @@
import com.speedment.config.db.Schema;
import com.speedment.internal.ui.config.trait.HasEnabledProperty;
import com.speedment.internal.ui.config.trait.HasNameProperty;
import com.speedment.internal.ui.property.IntegerPropertyItem;
import com.speedment.internal.ui.property.StringPropertyItem;
import java.util.Map;
import java.util.function.BiFunction;
import java.util.stream.Stream;
import javafx.beans.property.IntegerProperty;
import javafx.beans.property.StringProperty;
import org.controlsfx.control.PropertySheet;

/**
*
Expand All @@ -24,6 +28,32 @@ public DbmsProperty(Project parent, Map<String, Object> data) {
super(parent, data);
}

@Override
public Stream<PropertySheet.Item> getUiVisibleProperties() {
return Stream.of(
HasNameProperty.super.getUiVisibleProperties(),
HasEnabledProperty.super.getUiVisibleProperties(),
Stream.of(
// TODO: Add DbmsType
new StringPropertyItem(
ipAddressProperty(),
"IP Address",
"The ip of the database host."
),
new IntegerPropertyItem(
portProperty(),
"Port",
"The port of the database on the database host."
),
new StringPropertyItem(
usernameProperty(),
"Username",
"The username to use when connecting to the database."
)
)
).flatMap(s -> s);
}

public final StringProperty typeNameProperty() {
return stringPropertyOf(TYPE_NAME);
}
Expand Down
Expand Up @@ -17,6 +17,7 @@
package com.speedment.internal.ui.config;

import com.speedment.config.Document;
import com.speedment.internal.ui.config.trait.HasUiVisibleProperties;
import javafx.beans.property.BooleanProperty;
import javafx.beans.property.DoubleProperty;
import javafx.beans.property.IntegerProperty;
Expand All @@ -28,7 +29,7 @@
*
* @author Emil Forslund
*/
public interface DocumentProperty extends Document {
public interface DocumentProperty extends Document, HasUiVisibleProperties {

StringProperty stringPropertyOf(String key);

Expand Down
Expand Up @@ -7,10 +7,13 @@
import com.speedment.internal.ui.config.trait.HasColumnProperty;
import com.speedment.internal.ui.config.trait.HasNameProperty;
import com.speedment.internal.ui.config.trait.HasOrdinalPositionProperty;
import com.speedment.internal.ui.property.StringPropertyItem;
import java.util.Map;
import java.util.stream.Stream;
import static javafx.beans.binding.Bindings.createObjectBinding;
import javafx.beans.binding.ObjectBinding;
import javafx.beans.property.StringProperty;
import org.controlsfx.control.PropertySheet;

/**
*
Expand All @@ -22,6 +25,25 @@ public final class ForeignKeyColumnProperty extends AbstractChildDocumentPropert
public ForeignKeyColumnProperty(ForeignKey parent, Map<String, Object> data) {
super(parent, data);
}

@Override
public Stream<PropertySheet.Item> getUiVisibleProperties() {
return Stream.of(
HasColumnProperty.super.getUiVisibleProperties(),
Stream.of(
new StringPropertyItem(
foreignTableNameProperty(),
"Foreign Table Name",
"The name of the database table that this foreign key references."
),
new StringPropertyItem(
foreignColumnNameProperty(),
"Foreign Column Name",
"The name of the database column that this foreign key references."
)
)
).flatMap(s -> s);
}

public final StringProperty foreignTableNameProperty() {
return stringPropertyOf(FOREIGN_TABLE_NAME);
Expand Down
Expand Up @@ -7,6 +7,8 @@
import com.speedment.internal.ui.config.trait.HasNameProperty;
import java.util.Map;
import java.util.function.BiFunction;
import java.util.stream.Stream;
import org.controlsfx.control.PropertySheet;

/**
*
Expand All @@ -18,6 +20,14 @@ public final class ForeignKeyProperty extends AbstractChildDocumentProperty<Tabl
public ForeignKeyProperty(Table parent, Map<String, Object> data) {
super(parent, data);
}

@Override
public Stream<PropertySheet.Item> getUiVisibleProperties() {
return Stream.concat(
HasNameProperty.super.getUiVisibleProperties(),
HasEnabledProperty.super.getUiVisibleProperties()
);
}

@Override
public BiFunction<ForeignKey, Map<String, Object>, ForeignKeyColumn> foreignKeyColumnConstructor() {
Expand Down
Expand Up @@ -7,6 +7,8 @@
import com.speedment.internal.ui.config.trait.HasOrderTypeProperty;
import com.speedment.internal.ui.config.trait.HasOrdinalPositionProperty;
import java.util.Map;
import java.util.stream.Stream;
import org.controlsfx.control.PropertySheet;

/**
*
Expand All @@ -19,4 +21,12 @@ public final class IndexColumnProperty extends AbstractChildDocumentProperty<Ind
public IndexColumnProperty(Index parent, Map<String, Object> data) {
super(parent, data);
}

@Override
public Stream<PropertySheet.Item> getUiVisibleProperties() {
return Stream.concat(
HasColumnProperty.super.getUiVisibleProperties(),
HasOrderTypeProperty.super.getUiVisibleProperties()
);
}
}
18 changes: 18 additions & 0 deletions src/main/java/com/speedment/internal/ui/config/IndexProperty.java
Expand Up @@ -5,9 +5,12 @@
import com.speedment.config.db.Table;
import com.speedment.internal.ui.config.trait.HasEnabledProperty;
import com.speedment.internal.ui.config.trait.HasNameProperty;
import com.speedment.internal.ui.property.BooleanPropertyItem;
import java.util.Map;
import java.util.function.BiFunction;
import java.util.stream.Stream;
import javafx.beans.property.BooleanProperty;
import org.controlsfx.control.PropertySheet;

/**
*
Expand All @@ -20,6 +23,21 @@ public IndexProperty(Table parent, Map<String, Object> data) {
super(parent, data);
}

@Override
public Stream<PropertySheet.Item> getUiVisibleProperties() {
return Stream.of(
HasNameProperty.super.getUiVisibleProperties(),
HasEnabledProperty.super.getUiVisibleProperties(),
Stream.of(
new BooleanPropertyItem(
uniqueProperty(),
"Is Unique",
"True if elements in this index are unique."
)
)
).flatMap(s -> s);
}

public final BooleanProperty uniqueProperty() {
return booleanPropertyOf(UNIQUE);
}
Expand Down
Expand Up @@ -7,6 +7,8 @@
import com.speedment.internal.ui.config.trait.HasNameProperty;
import com.speedment.internal.ui.config.trait.HasOrdinalPositionProperty;
import java.util.Map;
import java.util.stream.Stream;
import org.controlsfx.control.PropertySheet;

/**
*
Expand All @@ -19,4 +21,12 @@ public final class PrimaryKeyColumnProperty extends AbstractChildDocumentPropert
public PrimaryKeyColumnProperty(Table parent, Map<String, Object> data) {
super(parent, data);
}

@Override
public Stream<PropertySheet.Item> getUiVisibleProperties() {
return Stream.concat(
HasColumnProperty.super.getUiVisibleProperties(),
HasEnabledProperty.super.getUiVisibleProperties()
);
}
}

0 comments on commit 31248d2

Please sign in to comment.