i had the following code that i wanted to convert to the new enhanced for loop:
private String myMethod(Collection c){
for(Iterator<String> it = c.iterator(); it.hasNext();){
String s = it.next();
...
}
}
so i rewrote it like this:
private String myMethod(Collection c){
for(String s : c){
...
}
}
but that code gave me the following "error" in eclipse:
Type mismatch: cannot convert from element type Object to String
here's the final, error-free solution:
private String myMethod(Collection<String> c){
for(String s : c){
...
}
}
IT, computer and programming tutorials and tips that i couldnt find anywhere else using google, from my daily work as a Senior Developer of solutions using Java and Linux.
20121031
20121025
java ejb ql: SELECT count(*) from X where x IN (SELECT DISTINCT x FROM Y WHERE z)
when a user with the buyer role logs into the system, we want to count
the distinct number of tours that have trqs (transport requests) registered for that buyer/user.
a Tour is composed of 0 to many Trqs. Trqs can only be associated with 1 Tour.
Tour table:
CREATE TABLE TOUR
(
ID decimal(20) PRIMARY KEY NOT NULL,
...
);
Trq table:
CREATE TABLE TRQ
(
...
BUYERID varchar2(100) NOT NULL,
TOURID decimal(20),
...
);
the relevant TourServicesBean java code will look like this:
public int findCountByMemberId(String memberId) {
String s = "SELECT count(t) from Tour t where t.id IN (SELECT DISTINCT tr.tourId FROM Trq tr WHERE tr.buyerId = '"+memberId+"' and tr.tourId = t.id)";
Query q = em.createQuery(s);
Long l = (Long) q.getSingleResult();
return l.intValue();
}
the inner SELECT can return multiple, identical tourIds so we use DISTINCT to only get unique tourIds. then the main SELECT counts the number of unique tourids.
a Tour is composed of 0 to many Trqs. Trqs can only be associated with 1 Tour.
Tour table:
CREATE TABLE TOUR
(
ID decimal(20) PRIMARY KEY NOT NULL,
...
);
Trq table:
CREATE TABLE TRQ
(
...
BUYERID varchar2(100) NOT NULL,
TOURID decimal(20),
...
);
the relevant TourServicesBean java code will look like this:
public int findCountByMemberId(String memberId) {
String s = "SELECT count(t) from Tour t where t.id IN (SELECT DISTINCT tr.tourId FROM Trq tr WHERE tr.buyerId = '"+memberId+"' and tr.tourId = t.id)";
Query q = em.createQuery(s);
Long l = (Long) q.getSingleResult();
return l.intValue();
}
the inner SELECT can return multiple, identical tourIds so we use DISTINCT to only get unique tourIds. then the main SELECT counts the number of unique tourids.
20121024
how to output an array of strings to a comma separated list of strings
import java.util.Arrays;
public class StringTest {
private static String[] colIds = {"abc","def","ghi"};
public static void main(String[] args) {
String s = Arrays.toString(colIds);
// remove leading and trailing brackets, i.e. "[" and "]"
System.out.println(s.substring(1, s.length()-1));
}
}
the output will look like this:
abc, def, ghi
if you take away the substring code, then the output will look like this:
[abc, def, ghi]
public class StringTest {
private static String[] colIds = {"abc","def","ghi"};
public static void main(String[] args) {
String s = Arrays.toString(colIds);
// remove leading and trailing brackets, i.e. "[" and "]"
System.out.println(s.substring(1, s.length()-1));
}
}
the output will look like this:
abc, def, ghi
if you take away the substring code, then the output will look like this:
[abc, def, ghi]
sucks that geany doesn't appear to have negative lookahead regex capabilities :(
as of version 0.21 in ubuntu 12.04
e.g.
(?!rich)faces
doesn't work (i.e. match strings ending in faces that aren't preceded by rich)
whereas this works:
(?:rich)faces
doesn't work (i.e. match strings ending in faces that are preceded by rich)
e.g.
(?!rich)faces
doesn't work (i.e. match strings ending in faces that aren't preceded by rich)
whereas this works:
(?:rich)faces
doesn't work (i.e. match strings ending in faces that are preceded by rich)
20121015
rich:calendar button icon not rendering or getting rerendered
i have a rich:calendar inside a rich:column in a rich:dataTable. when the table gets rendered i only see an input field for the rich:calendar, no calendar icon. when i sort the column, then the icon becomes visible.
the workaround is to define buttonIcon, e.g.:
then it gets rendered every time =)
set the value of buttonIcon to whatever you like.
note, you can also use a text if you like, instead, e.g.: buttonLabel="Choose"
the workaround is to define buttonIcon, e.g.:
<rich:column sortable="true" sortBy="#{trip.startDate}"
filterBy="#{trip.startDate}" filterEvent="onkeyup">
<f:facet name="header">
<h:outputText value="#{msg['label.startDate']}" />
</f:facet>
<h:outputText value="#{trip.getStartDateDate()}"
style="width: 80%;text-align: center" rendered="#{!tripMgrBean.isEditable(trip.id)}">
<f:convertDateTime type="date" dateStyle="short" timeZone="Europe/Oslo" pattern="#{msg['calendar.datePattern']}"/>
</h:outputText>
<rich:calendar value="#{trip.startDate}" buttonIcon="/images/icons/calendar.gif"
enableManualInput="true"
converterMessage="#{msg['label.wrong']} #{msg['label.dateformat']}"
locale="#{userMenuBean.userLocale}"
direction="auto"
popup="true"
showInput="true"
showApplyButton="false"
datePattern="#{msg['calendar.datePattern']}"
inputSize="13"
cellWidth="24px"
cellHeight="22px"
rendered="#{tripMgrBean.isEditable(trip.id)}"/>
</rich:column>
then it gets rendered every time =)
set the value of buttonIcon to whatever you like.
note, you can also use a text if you like, instead, e.g.: buttonLabel="Choose"
20121014
jboss 4.2.2.GA how to inject ejb3 stateless session bean into jsf 1.2 managed backing bean
##########
// JSF 1.2 backing bean
@org.ajax4jsf.model.KeepAlive
public class TripManagerBean {
@EJB(name="earName/TripBean/local")
private TripLocal tripBean;
public TripManagerBean() {
...
}
##########
earName is foo if the EAR is called foo.ear.
##########
// EJB3 bean
@Stateless
public class TripBean implements TripLocal {
@PersistenceContext
private EntityManager em;
...
}
##########
##########
// EJB3 bean local interface
public interface TripLocal {
...
}
##########
thanks to this page about jndi bindings in ejb3
and here's how to lookup an ejb3 stateless session bean using jndi from the backing bean.
// JSF 1.2 backing bean
@org.ajax4jsf.model.KeepAlive
public class TripManagerBean {
@EJB(name="earName/TripBean/local")
private TripLocal tripBean;
public TripManagerBean() {
...
}
##########
earName is foo if the EAR is called foo.ear.
##########
// EJB3 bean
@Stateless
public class TripBean implements TripLocal {
@PersistenceContext
private EntityManager em;
...
}
##########
##########
// EJB3 bean local interface
public interface TripLocal {
...
}
##########
thanks to this page about jndi bindings in ejb3
and here's how to lookup an ejb3 stateless session bean using jndi from the backing bean.
jboss 4.2.2.GA how to get ejb3 stateless session bean using jndi in jsf 1.2 managed backing bean
##########
// JSF 1.2 backing bean
@org.ajax4jsf.model.KeepAlive
public class TripManagerBean {
private TripLocal tripBean;
public TripManagerBean() {
...
initTripBean();
}
private void initTripBean() {
if(tripBean == null) {
try {
tripBean = (TripLocal) InitialContext.doLookup("earName/TripBean/local");
} catch (NamingException e) {
e.printStackTrace();
}
}
}
...
}
##########
earName is foo if the EAR is called foo.ear.
##########
// EJB3 bean
@Stateless
public class TripBean implements TripLocal {
@PersistenceContext
private EntityManager em;
...
}
##########
##########
// EJB3 bean local interface
public interface TripLocal {
...
}
##########
thanks to this page about jndi bindings in ejb3
and here's how to inject an ejb3 stateless session bean into a jsf managed backing bean using the ejb annotation.
// JSF 1.2 backing bean
@org.ajax4jsf.model.KeepAlive
public class TripManagerBean {
private TripLocal tripBean;
public TripManagerBean() {
...
initTripBean();
}
private void initTripBean() {
if(tripBean == null) {
try {
tripBean = (TripLocal) InitialContext.doLookup("earName/TripBean/local");
} catch (NamingException e) {
e.printStackTrace();
}
}
}
...
}
##########
earName is foo if the EAR is called foo.ear.
##########
// EJB3 bean
@Stateless
public class TripBean implements TripLocal {
@PersistenceContext
private EntityManager em;
...
}
##########
##########
// EJB3 bean local interface
public interface TripLocal {
...
}
##########
thanks to this page about jndi bindings in ejb3
and here's how to inject an ejb3 stateless session bean into a jsf managed backing bean using the ejb annotation.
eclipse not creating class files
when i save a change in a java file, its class file in the bin output folder wasn't getting updated with the change.
i found i had to enabled "build automatically" in preferences:
window > preferences > general > workspace > check build automatically
thanks to this thread:
https://bugs.eclipse.org/bugs/show_bug.cgi?id=23076
i found i had to enabled "build automatically" in preferences:
window > preferences > general > workspace > check build automatically
thanks to this thread:
https://bugs.eclipse.org/bugs/show_bug.cgi?id=23076
20121008
eclipse keyboard shortcut: maximize/minimize/restore/hide/show visual/source view tab/panel: Shift+F6
if you're editing an xhtml/jsf file in eclipse you have views like:
visual/source
source
preview
well if you're in the visual/source view (tab) you can toggle the visual part of the view by doing the following keyboard shortcut:
Shift+F6
visual/source
source
preview
well if you're in the visual/source view (tab) you can toggle the visual part of the view by doing the following keyboard shortcut:
Shift+F6
Subscribe to:
Posts (Atom)