Hi There,
I'm Starting a Web Project with GWT and some problems about datastore
delete by ID.
do not know why having this problem. I think it should be the primary
key generation.
OBS: getters and setters were not placed in this post
Class GRUPO:
import javax.jdo.PersistenceManager;
import javax.jdo.annotations.Extension;
import javax.jdo.annotations.IdGeneratorStrategy;
import javax.jdo.annotations.IdentityType;
import javax.jdo.annotations.PersistenceCapable;
import javax.jdo.annotations.Persistent;
import javax.jdo.annotations.PrimaryKey;
import javax.jdo.listener.StoreCallback;
import com.metadot.book.connectr.shared.GrupoDTO;
@PersistenceCapable(identityType = IdentityType.APPLICATION,
detachable = "true")
public class Grupo implements StoreCallback {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
@Extension(vendorName = "datanucleus", key = "gae.encoded-
pk", value = "true")
private String id;
@Persistent
private String GrupoNome;
@SuppressWarnings("unused")
@Persistent
private UserAccount userAccount;
public Grupo() {
}
public Grupo(GrupoDTO grupoDTO) {
this();
this.setBasicInfo(grupoDTO.getGrupoNome());
}
}
Class GrupoList.java:
import com.google.gwt.core.client.GWT;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
import com.metadot.book.connectr.shared.GrupoDTO;
public class GrupoList extends Composite {
private static GrupoListUiBinder uiBinder = GWT
.create(GrupoListUiBinder.class);
interface GrupoListUiBinder extends UiBinder<Widget, GrupoList>
{
}
@UiField
VerticalPanel gruposPanel;
private List<GrupoDTO> grupoDTOs;
private final static GrupoServiceAsync grupoService = GWT
.create(GrupoService.class);
public GrupoList() {
initWidget(uiBinder.createAndBindUi(this));
}
public GrupoList(List<GrupoDTO> grupoDTOs) {
this();
this.grupoDTOs = grupoDTOs;
displayGrupos();
}
public void showGrupos() {
grupoService
.getGrupos(new AsyncCallback<List<GrupoDTO>>() {
public void onFailure(Throwable caught) {
Window.alert("An error occurred");
}
public void onSuccess(List<GrupoDTO> result) {
grupoDTOs = result;
displayGrupos();
}
});
}
private void displayGrupos() {
for (final GrupoDTO grupo: grupoDTOs) {
gruposPanel.add(new GrupoItem(grupo));
}
}
}
Class GrupoItem.java:
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Widget;
import com.metadot.book.connectr.shared.GrupoDTO;
public class GrupoItem extends Composite {
private static GrupoItemUiBinder uiBinder = GWT
.create(GrupoItemUiBinder.class);
interface GrupoItemUiBinder extends UiBinder<Widget, GrupoItem>
{
}
@UiField
Label title;
@UiField
Button delete, edit;
GrupoDTO grupo;
private final static GrupoServiceAsync grupoService = GWT
.create(GrupoService.class);
public GrupoItem() {
initWidget(uiBinder.createAndBindUi(this));
}
public GrupoItem(String title, String id) {
this();
this.title.setText(title);
}
public GrupoItem(GrupoDTO grupoDTO) {
this();
this.grupo = grupoDTO;
this.title.setText(grupo.getGrupoNome());
}
public GrupoItem(String title) {
this();
this.title.setText(title);
}
private static void deleteGrupo(GrupoDTO grupo) {
grupoService.deleteGrupo(grupo.getId(),
new AsyncCallback<Boolean>() {
public void onFailure(Throwable caught) {
Window.alert("An error occurred");
}
public void onSuccess(Boolean result) {
ConnectrApp.get().cancelEditFriend();
}
});
}
@UiHandler("delete")
void onDeleteClick(ClickEvent e) {
if (Window.confirm("Deseja mesmo cancelar?")) {
deleteGrupo(grupo);
}
}
@UiHandler("edit")
void onEditClick(ClickEvent e) {
// handle click
ConnectrApp.get().showEditGrupo(grupo.getId());
}
}
at last the class GrupoServiceImpl.Java:
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import javax.jdo.PersistenceManager;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
import com.metadot.book.connectr.client.GrupoService;
import com.metadot.book.connectr.server.domain.Grupo;
import com.metadot.book.connectr.server.domain.UserAccount;
import com.metadot.book.connectr.shared.GrupoDTO;
@SuppressWarnings("serial")
public class GrupoServiceImpl extends RemoteServiceServlet
implements GrupoService{
public GrupoServiceImpl() {
AppMisc.populateDataStoreOnce();
}
public GrupoDTO updateGrupo(GrupoDTO grupoDTO) {
if (grupoDTO.getId() == null){
Grupo newGrupo = addGrupo(grupoDTO);
return newGrupo.toDTO();
}
PersistenceManager pm =
PMF.get().getPersistenceManager();
Grupo grupo = null;
try {
grupo = pm.getObjectById(Grupo.class,
grupoDTO.getId());
grupo.updateFromDTO(grupoDTO);
} catch (Exception e) {
e.printStackTrace();
} finally {
pm.close();
}
return grupoDTO;
}
//AQUI E O DELETE
public Boolean deleteGrupo(String id) {
PersistenceManager pm =
PMF.get().getPersistenceManager();
try {
Grupo grupo = pm.getObjectById(Grupo.class, id);
if (grupo != null) {
pm.deletePersistent(pm.getObjectById(Grupo.class,
id));
}
} finally {
pm.close();
}
return true;
}
// criando novo Grupo object no Datastore
private Grupo addGrupo(GrupoDTO grupoDTO) {
PersistenceManager pm =
PMF.get().getPersistenceManager();
Grupo grupo = null;
try {
//usando um user default
UserAccount currentUser =
UserAccount.getDefaultUser(); // detached object
currentUser = pm.makePersistent(currentUser); // attach
grupo = new Grupo(grupoDTO);
currentUser.getGrupos().add(grupo);
} finally {
pm.close();
}
return grupo;
}
public List<GrupoDTO> getGrupos() {
List<GrupoDTO> listaGrupos = new ArrayList<GrupoDTO>();
PersistenceManager pm =
PMF.get().getPersistenceManager();
try {
UserAccount user = UserAccount.getDefaultUser(pm);
Set<Grupo> grupos = user.getGrupos();
for (Grupo grupo : grupos) {
listaGrupos.add(grupo.getGrupoNomeObj());
}
} finally {
pm.close();
}
return listaGrupos;
}
}
I do not know if I let go of some information. let me know anything
I'll post here
Grateful now!
--
You received this message because you are subscribed to the Google Groups
"Google Web Toolkit" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/google-web-toolkit?hl=en.