1 19 20 package org.netbeans.modules.j2ee.persistence.wizard.unit; 21 22 import java.awt.Color ; 23 import java.awt.event.ActionEvent ; 24 import java.awt.event.ActionListener ; 25 import javax.swing.event.ChangeListener ; 26 import javax.swing.event.DocumentEvent ; 27 import javax.swing.event.DocumentListener ; 28 import javax.swing.text.JTextComponent ; 29 import org.netbeans.api.project.Project; 30 import org.netbeans.api.project.ProjectUtils; 31 import org.netbeans.modules.j2ee.persistence.dd.persistence.model_1_0.Persistence; 32 import org.netbeans.modules.j2ee.persistence.dd.persistence.model_1_0.PersistenceUnit; 33 import org.netbeans.modules.j2ee.persistence.provider.DefaultProvider; 34 import org.netbeans.modules.j2ee.persistence.provider.InvalidPersistenceXmlException; 35 import org.netbeans.modules.j2ee.persistence.unit.PUDataObject; 36 import org.netbeans.modules.j2ee.persistence.provider.Provider; 37 import org.netbeans.modules.j2ee.persistence.provider.ProviderUtil; 38 import org.netbeans.modules.j2ee.persistence.spi.datasource.JPADataSource; 39 import org.netbeans.modules.j2ee.persistence.spi.datasource.JPADataSourcePopulator; 40 import org.netbeans.modules.j2ee.persistence.util.PersistenceProviderComboboxHelper; 41 import org.netbeans.modules.j2ee.persistence.wizard.unit.PersistenceUnitWizardPanel.TableGeneration; 42 import org.openide.util.NbBundle; 43 44 48 public class PersistenceUnitWizardPanelDS extends PersistenceUnitWizardPanel { 49 50 private Project project; 51 52 public PersistenceUnitWizardPanelDS(Project project, ChangeListener changeListener, boolean editName) { 53 this(project, changeListener, editName, TableGeneration.CREATE); 54 } 55 56 public PersistenceUnitWizardPanelDS(Project project, ChangeListener changeListener, 57 boolean editName, TableGeneration tg) { 58 59 initComponents(); 60 setTableGeneration(tg); 61 this.project = project; 62 63 if (ProviderUtil.isValidServerInstanceOrNone(project)){ 64 connectDatasources(); 65 } 66 67 PersistenceProviderComboboxHelper comboHelper = new PersistenceProviderComboboxHelper(project); 68 comboHelper.connect(providerCombo); 69 70 unitNameTextField.setText(ProjectUtils.getInformation(project).getName() + "PU"); unitNameTextField.setVisible(editName); 73 unitNameLabel.setVisible(editName); 74 75 unitNameTextField.getDocument().addDocumentListener(new ValidationListener()); 76 errorMessage.setForeground(Color.RED); 77 } 78 79 82 private void setTableGeneration(TableGeneration tg){ 83 if (TableGeneration.CREATE.equals(tg)){ 84 ddlCreate.setSelected(true); 85 } else if (TableGeneration.DROP_CREATE.equals(tg)){ 86 ddlDropCreate.setSelected(true); 87 } else { 88 ddlUnkown.setSelected(true); 89 } 90 } 91 92 private void connectDatasources() { 93 JPADataSourcePopulator dsPopulator = project.getLookup().lookup(JPADataSourcePopulator.class); 94 dsPopulator.connect(dsCombo); 95 96 dsCombo.addActionListener(new ActionListener () { 97 public void actionPerformed(ActionEvent e) { 98 checkValidity(); 99 } 100 }); 101 102 ((JTextComponent )dsCombo.getEditor().getEditorComponent()). 103 getDocument().addDocumentListener(new DocumentListener () { 104 public void changedUpdate(DocumentEvent e) { 105 checkValidity(); 106 } 107 public void insertUpdate(DocumentEvent e) { 108 checkValidity(); 109 } 110 public void removeUpdate(DocumentEvent e) { 111 checkValidity(); 112 } 113 }); 114 } 115 116 117 121 private void checkValidity(){ 122 if (isValidPanel()) { 123 firePropertyChange(IS_VALID, false, true); 124 } else { 125 firePropertyChange(IS_VALID, true, false); 126 } 127 } 128 129 public String getPersistenceUnitName() { 130 return unitNameTextField.getText(); 131 } 132 133 public String getDatasource() { 134 return ((JTextComponent )dsCombo.getEditor().getEditorComponent()).getText(); 135 } 136 137 public void setPreselectedDB(String db) { 138 boolean hasItem = false; 139 for (int i = 0; i < dsCombo.getItemCount(); i++) { 140 if (dsCombo.getItemAt(i) instanceof JPADataSource) { 141 JPADataSource ds = (JPADataSource) dsCombo.getItemAt(i); 142 if (ds.getJndiName().equals(db)) { 143 hasItem = true; 144 break; 145 } 146 } 147 } 148 dsCombo.setSelectedItem(db); 149 dsCombo.setEnabled(!hasItem); 150 } 151 152 public boolean isNonDefaultProviderEnabled() { 153 return !(providerCombo.getSelectedItem() instanceof DefaultProvider); 154 } 155 156 public String getNonDefaultProvider() { 157 return ((Provider) providerCombo.getSelectedItem()).getProviderClass(); 158 } 159 160 161 public boolean isJTA() { 162 return jtaCheckBox.isEnabled() && jtaCheckBox.isSelected(); 163 } 164 165 166 public String getTableGeneration() { 167 if (ddlCreate.isSelected()) { 168 return Provider.TABLE_GENERATION_CREATE; 169 } else if (ddlDropCreate.isSelected()) { 170 return Provider.TABLE_GENERATION_DROPCREATE; 171 } else { 172 return Provider.TABLE_GENERATTION_UNKOWN; 173 } 174 } 175 176 public boolean isValidPanel() { 177 try{ 178 if (!isNameValid()){ 179 return false; 180 } 181 } catch (InvalidPersistenceXmlException ipx){ 182 setErrorMessage(NbBundle.getMessage(PersistenceUnitWizardDescriptor.class,"ERR_InvalidPersistenceXml", ipx.getPath())); return false; 184 } 185 return true; 186 } 187 188 192 private boolean isNameValid() throws InvalidPersistenceXmlException{ 193 return isEmptyOrNull(getPersistenceUnitName()) ? false : isNameUnique(); 194 } 195 196 199 public boolean isNameUnique() throws InvalidPersistenceXmlException{ 200 if (!ProviderUtil.persistenceExists(project)){ 201 return true; 202 } 203 Persistence persistence = null; 204 PUDataObject pud = ProviderUtil.getPUDataObject(project); 205 persistence = pud.getPersistence(); 206 207 PersistenceUnit[] punits = persistence.getPersistenceUnit(); 208 for (int i = 0; i < punits.length; i++) { 209 if (punits[i].getName().equals(getPersistenceUnitName())){ 210 return false; 211 } 212 } 213 return true; 214 } 215 216 219 private boolean isEmptyOrNull(String str){ 220 return str == null || "".equals(str.trim()); 221 } 222 223 public Provider getSelectedProvider() { 224 return (Provider) providerCombo.getSelectedItem(); 225 } 226 227 public void setErrorMessage(String msg){ 228 errorMessage.setText(msg); 229 } 230 231 236 private void initComponents() { 238 buttonGroup1 = new javax.swing.ButtonGroup (); 239 tableCreationButtonGroup = new javax.swing.ButtonGroup (); 240 unitNameLabel = new javax.swing.JLabel (); 241 unitNameTextField = new javax.swing.JTextField (); 242 jLabel1 = new javax.swing.JLabel (); 243 jLabel2 = new javax.swing.JLabel (); 244 ddlCreate = new javax.swing.JRadioButton (); 245 ddlDropCreate = new javax.swing.JRadioButton (); 246 ddlUnkown = new javax.swing.JRadioButton (); 247 datasourceLabel = new javax.swing.JLabel (); 248 jtaCheckBox = new javax.swing.JCheckBox (); 249 dsCombo = new javax.swing.JComboBox (); 250 persistenceProviderLabel = new javax.swing.JLabel (); 251 providerCombo = new javax.swing.JComboBox (); 252 errorMessage = new javax.swing.JLabel (); 253 254 setName(org.openide.util.NbBundle.getMessage(PersistenceUnitWizardPanelDS.class, "LBL_Step1")); 255 unitNameLabel.setDisplayedMnemonic(java.util.ResourceBundle.getBundle("org/netbeans/modules/j2ee/persistence/wizard/unit/Bundle").getString("MN_UnitName").charAt(0)); 256 unitNameLabel.setLabelFor(unitNameTextField); 257 unitNameLabel.setText(org.openide.util.NbBundle.getMessage(PersistenceUnitWizardPanelDS.class, "LBL_UnitName")); 258 unitNameLabel.getAccessibleContext().setAccessibleDescription(java.util.ResourceBundle.getBundle("org/netbeans/modules/j2ee/persistence/wizard/unit/Bundle").getString("ACSD_UnitName")); 259 260 unitNameTextField.setColumns(40); 261 unitNameTextField.setText("em"); 262 unitNameTextField.getAccessibleContext().setAccessibleDescription(java.util.ResourceBundle.getBundle("org/netbeans/modules/j2ee/persistence/wizard/unit/Bundle").getString("ACSD_UnitName")); 263 264 jLabel1.setText(org.openide.util.NbBundle.getMessage(PersistenceUnitWizardPanelDS.class, "LBL_SpecifyPersistenceProvider")); 265 266 jLabel2.setText(org.openide.util.NbBundle.getMessage(PersistenceUnitWizardPanelDS.class, "LBL_TableGeneration")); 267 jLabel2.getAccessibleContext().setAccessibleDescription(java.util.ResourceBundle.getBundle("org/netbeans/modules/j2ee/persistence/wizard/unit/Bundle").getString("ACSD_TableGeneration")); 268 269 tableCreationButtonGroup.add(ddlCreate); 270 ddlCreate.setMnemonic(java.util.ResourceBundle.getBundle("org/netbeans/modules/j2ee/persistence/wizard/unit/Bundle").getString("CHB_Create_mnem").charAt(0)); 271 ddlCreate.setSelected(true); 272 ddlCreate.setText(org.openide.util.NbBundle.getMessage(PersistenceUnitWizardPanelDS.class, "LBL_Create")); 273 ddlCreate.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0)); 274 ddlCreate.setMargin(new java.awt.Insets (0, 0, 0, 0)); 275 ddlCreate.getAccessibleContext().setAccessibleDescription(java.util.ResourceBundle.getBundle("org/netbeans/modules/j2ee/persistence/wizard/unit/Bundle").getString("ACSD_Create")); 276 277 tableCreationButtonGroup.add(ddlDropCreate); 278 ddlDropCreate.setMnemonic(java.util.ResourceBundle.getBundle("org/netbeans/modules/j2ee/persistence/wizard/unit/Bundle").getString("CHB_DropCreate_mnem").charAt(0)); 279 ddlDropCreate.setText(org.openide.util.NbBundle.getMessage(PersistenceUnitWizardPanelDS.class, "LBL_DropCreate")); 280 ddlDropCreate.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0)); 281 ddlDropCreate.setMargin(new java.awt.Insets (0, 0, 0, 0)); 282 ddlDropCreate.getAccessibleContext().setAccessibleDescription(java.util.ResourceBundle.getBundle("org/netbeans/modules/j2ee/persistence/wizard/unit/Bundle").getString("ACSD_DropCreate")); 283 284 tableCreationButtonGroup.add(ddlUnkown); 285 ddlUnkown.setMnemonic(java.util.ResourceBundle.getBundle("org/netbeans/modules/j2ee/persistence/wizard/unit/Bundle").getString("CHB_None_mnem").charAt(0)); 286 ddlUnkown.setText(org.openide.util.NbBundle.getMessage(PersistenceUnitWizardPanelDS.class, "LBL_None")); 287 ddlUnkown.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0)); 288 ddlUnkown.setMargin(new java.awt.Insets (0, 0, 0, 0)); 289 ddlUnkown.getAccessibleContext().setAccessibleDescription(java.util.ResourceBundle.getBundle("org/netbeans/modules/j2ee/persistence/wizard/unit/Bundle").getString("ACSD_None")); 290 291 datasourceLabel.setDisplayedMnemonic(java.util.ResourceBundle.getBundle("org/netbeans/modules/j2ee/persistence/wizard/unit/Bundle").getString("MN_DatasourceName").charAt(0)); 292 datasourceLabel.setLabelFor(dsCombo); 293 datasourceLabel.setText(org.openide.util.NbBundle.getMessage(PersistenceUnitWizardPanelDS.class, "LBL_ServerDataSource")); 294 datasourceLabel.getAccessibleContext().setAccessibleDescription(java.util.ResourceBundle.getBundle("org/netbeans/modules/j2ee/persistence/wizard/unit/Bundle").getString("ACSD_DatasourceName")); 295 296 jtaCheckBox.setMnemonic(java.util.ResourceBundle.getBundle("org/netbeans/modules/j2ee/persistence/wizard/unit/Bundle").getString("CHB_JTA_mnem").charAt(0)); 297 jtaCheckBox.setSelected(true); 298 jtaCheckBox.setText(org.openide.util.NbBundle.getMessage(PersistenceUnitWizardPanelDS.class, "LBL_JTA")); 299 jtaCheckBox.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0)); 300 jtaCheckBox.setMargin(new java.awt.Insets (0, 0, 0, 0)); 301 jtaCheckBox.getAccessibleContext().setAccessibleDescription(java.util.ResourceBundle.getBundle("org/netbeans/modules/j2ee/persistence/wizard/unit/Bundle").getString("ACSD_JTA")); 302 303 dsCombo.setEditable(true); 304 305 persistenceProviderLabel.setDisplayedMnemonic(java.util.ResourceBundle.getBundle("org/netbeans/modules/j2ee/persistence/wizard/unit/Bundle").getString("MN_Provider").charAt(0)); 306 persistenceProviderLabel.setLabelFor(providerCombo); 307 persistenceProviderLabel.setText(java.util.ResourceBundle.getBundle("org/netbeans/modules/j2ee/persistence/wizard/unit/Bundle").getString("LBL_PersistenceProvider")); 308 persistenceProviderLabel.getAccessibleContext().setAccessibleName(java.util.ResourceBundle.getBundle("org/netbeans/modules/j2ee/persistence/wizard/unit/Bundle").getString("ACSD_Provider")); 309 persistenceProviderLabel.getAccessibleContext().setAccessibleDescription(java.util.ResourceBundle.getBundle("org/netbeans/modules/j2ee/persistence/wizard/unit/Bundle").getString("ACSD_Provider")); 310 311 providerCombo.getAccessibleContext().setAccessibleDescription(java.util.ResourceBundle.getBundle("org/netbeans/modules/j2ee/persistence/wizard/unit/Bundle").getString("ACSD_Provider")); 312 313 org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(this); 314 this.setLayout(layout); 315 layout.setHorizontalGroup( 316 layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) 317 .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup() 318 .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING) 319 .add(org.jdesktop.layout.GroupLayout.LEADING, layout.createSequentialGroup() 320 .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) 321 .add(unitNameLabel) 322 .add(persistenceProviderLabel) 323 .add(datasourceLabel)) 324 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) 325 .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) 326 .add(unitNameTextField, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 360, Short.MAX_VALUE) 327 .add(providerCombo, 0, 360, Short.MAX_VALUE) 328 .add(dsCombo, 0, 360, Short.MAX_VALUE))) 329 .add(org.jdesktop.layout.GroupLayout.LEADING, layout.createSequentialGroup() 330 .add(jLabel2) 331 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) 332 .add(ddlCreate) 333 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) 334 .add(ddlDropCreate) 335 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) 336 .add(ddlUnkown)) 337 .add(org.jdesktop.layout.GroupLayout.LEADING, jtaCheckBox) 338 .add(org.jdesktop.layout.GroupLayout.LEADING, jLabel1) 339 .add(errorMessage, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 514, Short.MAX_VALUE)) 340 .addContainerGap()) 341 ); 342 layout.setVerticalGroup( 343 layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) 344 .add(layout.createSequentialGroup() 345 .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) 346 .add(unitNameLabel) 347 .add(unitNameTextField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) 348 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) 349 .add(jLabel1) 350 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) 351 .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) 352 .add(persistenceProviderLabel) 353 .add(providerCombo, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) 354 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) 355 .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) 356 .add(datasourceLabel) 357 .add(dsCombo, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) 358 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) 359 .add(jtaCheckBox) 360 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) 361 .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) 362 .add(ddlCreate) 363 .add(ddlDropCreate) 364 .add(ddlUnkown) 365 .add(jLabel2)) 366 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 367 .add(errorMessage, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 22, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) 368 .addContainerGap()) 369 ); 370 } 372 private javax.swing.ButtonGroup buttonGroup1; 374 private javax.swing.JLabel datasourceLabel; 375 private javax.swing.JRadioButton ddlCreate; 376 private javax.swing.JRadioButton ddlDropCreate; 377 private javax.swing.JRadioButton ddlUnkown; 378 private javax.swing.JComboBox dsCombo; 379 private javax.swing.JLabel errorMessage; 380 private javax.swing.JLabel jLabel1; 381 private javax.swing.JLabel jLabel2; 382 private javax.swing.JCheckBox jtaCheckBox; 383 private javax.swing.JLabel persistenceProviderLabel; 384 private javax.swing.JComboBox providerCombo; 385 private javax.swing.ButtonGroup tableCreationButtonGroup; 386 private javax.swing.JLabel unitNameLabel; 387 private javax.swing.JTextField unitNameTextField; 388 390 394 private class ValidationListener implements DocumentListener { 395 public void insertUpdate(DocumentEvent e) { 396 checkValidity(); 397 } 398 public void removeUpdate(DocumentEvent e) { 399 checkValidity(); 400 } 401 public void changedUpdate(DocumentEvent e) { 402 checkValidity(); 403 } 404 } 405 } 406 407 | Popular Tags |