Skip to content

Commit

Permalink
BZ-1005238 - Data Modeller doesn't list existing packages
Browse files Browse the repository at this point in the history
  • Loading branch information
wmedvede committed Sep 12, 2013
1 parent 8dc4db7 commit 7d58d95
Show file tree
Hide file tree
Showing 7 changed files with 141 additions and 117 deletions.
Expand Up @@ -17,12 +17,16 @@
package org.kie.workbench.common.screens.datamodeller.client;


import org.kie.workbench.common.screens.datamodeller.client.util.DataModelerUtils;
import org.kie.workbench.common.screens.datamodeller.model.AnnotationDefinitionTO;
import org.kie.workbench.common.screens.datamodeller.model.DataModelTO;
import org.kie.workbench.common.screens.datamodeller.model.PropertyTypeTO;
import org.guvnor.common.services.project.model.Package;

import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.ArrayList;

public class DataModelerContext {

Expand All @@ -36,6 +40,8 @@ public class DataModelerContext {

private boolean dirty = false;

private List<String> currentProjectPackages = new ArrayList<String>();

public DataModelerContext() {
}

Expand Down Expand Up @@ -81,11 +87,42 @@ public boolean isDirty() {
public void setDirty(boolean dirty) {
this.dirty = dirty;
}

public void appendPackages(Collection<Package> packages) {
if (packages != null) {
for (Package packageToAppend : packages) {
if (!"".equals(packageToAppend.getPackageName()) && !currentProjectPackages.contains(packageToAppend.getPackageName())) {
currentProjectPackages.add(packageToAppend.getPackageName());
}
}
}
}

public void appendPackage(String packageName) {

if (packageName != null && !"".equals(packageName)) {
String[] subPackages = DataModelerUtils.getInstance().calculateSubPackages(packageName);
String subPackage = null;
for (int i = 0; subPackages != null && i < subPackages.length; i++) {
subPackage = subPackages[i];
if (!currentProjectPackages.contains(subPackage)) currentProjectPackages.add(subPackage);
}
}
}

public List<String> getCurrentProjectPackages() {
return currentProjectPackages;
}

public void cleanPackages() {
if (currentProjectPackages != null) currentProjectPackages.clear();
}

public void clear() {
if (annotationDefinitions != null) annotationDefinitions.clear();
if (baseTypes != null) baseTypes.clear();
if (dataModel != null && dataModel.getDataObjects() != null) dataModel.getDataObjects().clear();
cleanPackages();
helper = new DataModelHelper();
}
}
Expand Up @@ -16,6 +16,8 @@

package org.kie.workbench.common.screens.datamodeller.client;


import java.util.Collection;
import java.util.List;
import java.util.Map;
import javax.enterprise.event.Event;
Expand All @@ -26,6 +28,9 @@
import org.guvnor.common.services.project.context.ProjectContext;
import org.guvnor.common.services.project.context.ProjectContextChangeEvent;
import org.guvnor.common.services.project.model.Project;
import org.guvnor.common.services.project.model.Package;
import org.guvnor.common.services.project.service.ProjectService;
import org.jboss.errai.common.client.api.RemoteCallback;
import org.jboss.errai.common.client.api.Caller;
import org.jboss.errai.common.client.api.RemoteCallback;
import org.kie.workbench.common.screens.datamodeller.client.resources.i18n.Constants;
Expand Down Expand Up @@ -59,6 +64,7 @@
import org.uberfire.workbench.model.toolbar.impl.DefaultToolBar;
import org.uberfire.workbench.model.toolbar.impl.DefaultToolBarItem;


//@Dependent
@WorkbenchScreen(identifier = "dataModelerScreen")
public class DataModelerScreenPresenter {
Expand All @@ -82,6 +88,9 @@ public interface DataModelerScreenView
@Inject
private Caller<DataModelerService> modelerService;

@Inject
private Caller<ProjectService> projectService;

private Menus menus;

private ToolBar toolBar;
Expand Down Expand Up @@ -164,13 +173,14 @@ public void callback( GenerationResult result ) {
if ( project != null ) {
loadProjectDataModel( project );
}
dataModelerEvent.fire( new DataModelStatusChangeEvent( DataModelerEvent.DATA_MODEL_BROWSER,
getDataModel(),
oldDirtyStatus,
getContext().isDirty() ) );
dataModelerEvent.fire(new DataModelStatusChangeEvent(DataModelerEvent.DATA_MODEL_BROWSER,
getDataModel(),
oldDirtyStatus,
getContext().isDirty()));
}
},
new DataModelerErrorCallback( Constants.INSTANCE.modelEditor_saving_error() ) ).saveModel( getDataModel(), currentProject );
new DataModelerErrorCallback( Constants.INSTANCE.modelEditor_saving_error() ) ).saveModel(getDataModel(), currentProject);

}

@WorkbenchMenu
Expand All @@ -195,24 +205,32 @@ public void callback( final Map<String, AnnotationDefinitionTO> defs ) {

context.setAnnotationDefinitions( defs );

modelerService.call(
new RemoteCallback<DataModelTO>() {
projectService.call( new RemoteCallback<Collection<Package>>() {

public void callback(Collection<Package> packages) {

context.cleanPackages();
context.appendPackages(packages);

@Override
public void callback( DataModelTO dataModel ) {
BusyPopup.close();
dataModel.setParentProjectName( projectRootPath.getFileName() );
setDataModel( dataModel );
notification.fire( new NotificationEvent( Constants.INSTANCE.modelEditor_notification_dataModel_loaded( projectRootPath.toURI() ) ) );
}
modelerService.call(
new RemoteCallback<DataModelTO>() {

},
new DataModelerErrorCallback( Constants.INSTANCE.modelEditor_loading_error() ) ).loadModel( project );
@Override
public void callback( DataModelTO dataModel ) {
BusyPopup.close();
dataModel.setParentProjectName( projectRootPath.getFileName() );
setDataModel( dataModel );
notification.fire( new NotificationEvent( Constants.INSTANCE.modelEditor_notification_dataModel_loaded( projectRootPath.toURI() ) ) );
}

},
new DataModelerErrorCallback( Constants.INSTANCE.modelEditor_loading_error() ) ).loadModel(project);

}
}, new DataModelerErrorCallback(Constants.INSTANCE.modelEditor_loading_error())).resolvePackages(project);
}
},
new DataModelerErrorCallback( Constants.INSTANCE.modelEditor_annotationDef_loading_error() )
).getAnnotationDefinitions();
},new DataModelerErrorCallback( Constants.INSTANCE.modelEditor_annotationDef_loading_error() )
).getAnnotationDefinitions();

currentProject = project;
}
Expand Down Expand Up @@ -253,6 +271,23 @@ private void onProjectContextChange( @Observes final ProjectContextChangeEvent e
processProjectChange( project );
}

/*
private void onPackageAdded( @Observes final NewPackageEvent event ) {
//Projects are not cached so no need to do anything if this presenter is not active
if ( isOpen() ) {
final Package pkg = event.getPackage();
if ( pkg != null && isOnCurrentProject(pkg)) {
if (context != null) {
List<Package> packages = new ArrayList<Package>();
packages.add(pkg);
context.appendPackages(packages);
}
}
}
}
*/

private boolean isOpen() {
return open;
}
Expand Down Expand Up @@ -297,6 +332,15 @@ private void restoreModelStatus( GenerationResult result ) {
getDataModel().updateFingerPrints( result.getObjectFingerPrints() );
}

/*
private boolean isOnCurrentProject(Package pkg) {
if (currentProject != null) {
return currentProject.getRootPath().equals(pkg.getProjectRootPath());
}
return false;
}
*/

private void makeToolBar() {
toolBar = new DefaultToolBar( "dataModelerToolbar" );

Expand Down Expand Up @@ -359,7 +403,7 @@ public void callback( List<PropertyTypeTO> baseTypes ) {
}
},
new DataModelerErrorCallback( Constants.INSTANCE.modelEditor_propertyType_loading_error() )
).getBasePropertyTypes();
).getBasePropertyTypes();
}

private void clearContext() {
Expand Down
Expand Up @@ -110,6 +110,24 @@ public String extractPackageName(String fullClassName) {
public String[] getPackageTerms(String packageName) {
return packageName.split("\\.", -1);
}

public String[] calculateSubPackages(String packageName) {
String packageTerms[];
String subpackages[];

if (packageName == null || (packageTerms = getPackageTerms(packageName)) == null) return null;

subpackages = new String[packageTerms.length];
for (int i = 0; i < packageTerms.length; i++) {
String subpackage = "";
for (int j = 0; j <= i; j++) {
subpackage += packageTerms[j];
if (j < i) subpackage += ".";
}
subpackages[i] = subpackage;
}
return subpackages;
}

public String unCapitalize(String str) {
int strLen;
Expand Down
Expand Up @@ -172,7 +172,7 @@ private void onOk() {

newName[0] = name.getText() != null ? name.getText().trim() : "";
newLabel[0] = label.getText() != null ? label.getText().trim() : "";
newPackageName[0] = newPackage.getText() != null && !"".equals(newPackage.getText().trim()) ? newPackage.getText().trim() : null;
newPackageName[0] = newPackage.getText() != null && !"".equals(newPackage.getText().trim()) ? newPackage.getText().trim().toLowerCase() : null;

superClass[0] = superclassSelector.getSuperclassList().getValue();
if (SuperclassSelector.NOT_SELECTED.equals(superClass[0])) superClass[0] = null;
Expand Down Expand Up @@ -242,6 +242,7 @@ private void createDataObject(String packageName, String name, String label, Str
}
getDataModel().getDataObjects().add(dataObject);
notifyObjectCreated(dataObject);
if (getContext() != null) getContext().appendPackage(packageName);
}

private void clean() {
Expand Down
Expand Up @@ -79,7 +79,7 @@ public NewPackagePopup() {
public void onClick(ClickEvent event) {

setPackageName(null);
final String packgeName = newPackageName.getText() != null ? newPackageName.getText().trim() : "";
final String packgeName = newPackageName.getText() != null ? newPackageName.getText().trim().toLowerCase() : "";
validatorService.isValidPackageIdentifier(packgeName, new ValidatorCallback() {
@Override
public void onFailure() {
Expand Down
Expand Up @@ -29,7 +29,6 @@
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Widget;
import org.kie.workbench.common.screens.datamodeller.client.DataModelerContext;
import org.kie.workbench.common.screens.datamodeller.client.util.DataModelerUtils;
import org.kie.workbench.common.screens.datamodeller.client.validation.ValidatorService;
import org.kie.workbench.common.screens.datamodeller.model.DataModelTO;
import org.kie.workbench.common.screens.datamodeller.model.DataObjectTO;
Expand Down Expand Up @@ -63,6 +62,7 @@ interface PackageSelectorUIBinder
private static PackageSelectorUIBinder uiBinder = GWT.create(PackageSelectorUIBinder.class);

public static final String NOT_SELECTED = "NOT_SELECTED";
public static final String NOT_SELECTED_DESC = "<default>";
public static final String DEFAULT_PACKAGE = "defaultpkg";

private DataObjectTO dataObject;
Expand All @@ -78,8 +78,7 @@ public void onClick(ClickEvent event) {
newPackagePopup.show();
}
}, ClickEvent.getType());
packageList.addItem("", NOT_SELECTED);
packageList.addItem(DEFAULT_PACKAGE, DEFAULT_PACKAGE);
packageList.addItem(NOT_SELECTED_DESC, NOT_SELECTED);
}

@PostConstruct
Expand Down Expand Up @@ -111,6 +110,9 @@ private void processNewPackage(String newPackageName) {
packageList.setSelectedValue(newPackageName);
DomEvent.fireNativeEvent(Document.get().createChangeEvent(), packageList);
}
if (context != null) {
context.appendPackage(newPackageName.trim());
}
}
}

Expand Down Expand Up @@ -149,10 +151,18 @@ public void setDataObject(DataObjectTO dataObject) {
packageList.setSelectedValue(NOT_SELECTED);
}
}

private void initList() {
packageList.clear();
List<String> packageNames = new ArrayList<String>();

if (context != null && context.getCurrentProjectPackages() != null) {
for (String packageName : context.getCurrentProjectPackages()) {
packageNames.add(packageName);
}

}
/* WM old processing
if (getDataModel() != null) {
String packageName;
for (String className : getContext().getHelper().getClassList()) {
Expand All @@ -162,12 +172,13 @@ private void initList() {
}
}
}
*/

Collections.sort(packageNames);
packageList.addItem("", NOT_SELECTED);
packageList.addItem(DEFAULT_PACKAGE, DEFAULT_PACKAGE);
packageList.addItem(NOT_SELECTED_DESC, NOT_SELECTED);
for (String packageName : packageNames) {
packageList.addItem(packageName, packageName);
}
}

}
}

0 comments on commit 7d58d95

Please sign in to comment.