• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: wildcard Query
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: wildcard Query


  • Subject: Re: wildcard Query
  • From: "Cheong Hee (Gmail)" <email@hidden>
  • Date: Thu, 11 Nov 2010 11:16:18 +0800

I agreed that it had been better to have it all fetched from database with right sql statement that filtering out and get the name with "*" .
Since the "*" is usually the control character used to fetch all data from database, the name with "*" is quite an unusual case.
The other way is as some suggested either to change the "*" to something else at accessor method and avoiding the "*" being stored. This should be fine if database is all within own control. However, for existing database that already has such name in the table, it may not be convenient to change them at accessor method. The safest way to go i thought then will be grab all the names (that your one fetch for all coud b used), and parsing them through to grab the name with "*". Unless the records are too many.


Cheers

Cheong Hee

----- Original Message ----- From: "Mark Wardle" <email@hidden>
To: "Cheong Hee (Gmail)" <email@hidden>
Cc: "ISHIMOTO Ken" <email@hidden>; "WebObjects Development" <email@hidden>
Sent: Thursday, November 11, 2010 5:37 AM
Subject: Re: wildcard Query



I think I'd do this with raw SQL.

I needed to execute raw SQL to optimise a particular query and fetch.
I also wishes to avoid a trip to the database for each individual
fetch - one to identify the PKs and then one to fetch each enterprise
object. Therefore, not finding anything in Wonder, I asked the mailing
list (http://osdir.com/ml/webobjects-dev/2010-02/msg00236.html) and
wrote this:

/**
* Executes a raw SQL statement returning an array of EOGlobalIDs.
* The raw SQL should return sufficient columns to allow the raw row
to be converted into an
* enterprise object.
* You will usually need to convert column names to attribute names
to allow the raw rows
* to be converted properly.
*
* @param ec - editing context
* @param entityName - name of the entity that the raw rows will be
converted to
* @param sql - the raw SQL statement to be executed
* @param columns - array of attribute names to replace the column
names that will arrive from the database
* @return
*/
public static NSArray<EOGlobalID> executeRawSql(EOEditingContext ec,
String entityName, String sql, NSArray<String> columns) {
EOModelGroup modelGroup = ERXEOAccessUtilities.modelGroup(ec);
EOEntity entity = modelGroup.entityNamed(entityName);
String modelName = entity.model().name();
NSArray<NSDictionary<?,?>> rawRows = EOUtilities.rawRowsForSQL(ec,
modelName, sql, columns);
NSMutableArray<EOGlobalID> gids = new
NSMutableArray<EOGlobalID>(rawRows.count());
for(NSDictionary<?,?> row : rawRows) {
EOGlobalID gid = entity.globalIDForRow(row);
if (gid==null) throw new NullPointerException("Could not fetch
global ID for raw row: " + row);
gids.add(gid);
}
return gids;
}

I then use ERXEOGlobalIDUtilities.fetchObjectsWithGlobalIDs  to
convert all of this data into enterprise objects.

I'm sure this could all be optimised further, but it works and one
only has a single SELECT command issued against the database.

Best wishes,

Mark

On 10 November 2010 10:45, Cheong Hee (Gmail) <email@hidden> wrote:
Hi Ken

So sorry that I misunderstood your question. After spending some time,
I think this is what you need.

p = Pattern.compile("\\Q*\\E");
m = p.matcher(input);
if (m.find()) {
System.err.println("test starts" +
" with * signs...input: " + input);
}
But then the downside is you will have to enumerate each string one at a
time.

Cheers

Cheong Hee


----- Original Message ----- From: ISHIMOTO Ken To: Farrukh Ijaz Cc: WebObjects Development Sent: Wednesday, November 10, 2010 5:44 PM Subject: Re: wildcard Query Hi Farrukh, Sounds nice, I will take a look at that and give you feedback.

On 2010/11/10, at 10:09, Farrukh Ijaz wrote:

Hi Ken,
I spent some time exploring all the possibilities at the EOF level but it
looks like it does not work at the EOF level. I also inspected the
PostgresPlugin and found that the escape character is "|" instead of "\\"
but still it doesn't work. If your data is not very large, you can do
something like this.
create your own custom class for EOQualifierEvalution called
RegExpEvaluation as follows:
public static class RegExpEvaluation implements EOQualifierEvaluation {
String key, pattern;
public RegExpEvaluation(String key, String pattern) {
this.key = key;
this.pattern = pattern;
}
public boolean evaluateWithObject(Object obj) {
if (obj instanceof NSKeyValueCoding) {
Object value = ((NSKeyValueCoding) obj).valueForKey(key);
return (value instanceof String) && ((String) value).matches(pattern);
}
return false;
}
}
Fetch all the rows for the entity and using ERXArrayUtilities method as
follows:
EOFetchSpecification fs = new EOFetchSpecification(M_User.ENTITY_NAME, null,
null);
NSArray<ArticleDetail> eoz =
session().defaultEditingContext().objectsWithFetchSpecification(fs);
eoz = ERXArrayUtilities.filteredArrayWithQualifierEvaluation(eoz, new
RegExpEvaluation(M_User.NAME, ".*\\*.*"));
Hope this may help.
Farrukh
On 2010-11-09, at 8:33 PM, ISHIMOTO Ken wrote:


No
On 2010/11/09, at 15:48, Farrukh Ijaz wrote:

Try using "*[*]*" and see it works?
Farrukh

Sent from my iPhone
On 2010-11-09, at 5:34 PM, ISHIMOTO Ken <email@hidden> wrote:

Hi everyone,
I am fighting with a Qualifier and my Question is "Is there any way for
query all Data with an in."
DataSample :
Mike
Chuck
Dav*id
Ken
Like code bellow but the "*" is a Wildcard and won't work.
EOQualifier qualifier = M_User.NAME.contains("*");
I would love to find any Record with "*".

Is there any trick or command to get all Objects with an "*" ?

Thank you
--------------------------------------------------------
K's ROOM (ISHIMOTO Ken)
--------------------------------------------------------
[E-Mail] <email@hidden>
[iChat:] <email@hidden>
[HP] http://www.ksroom.com/
_____________________________________________________________________
This e-mail has not been scanned for viruses because it was written on an
Mac,
and there are NO Viruses on an Apple Computer.
For further information visit http://www.apple.com

_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden


________________________________

_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden

_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden




-- Dr. Mark Wardle Specialist registrar, Neurology Cardiff, UK

_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden


References: 
 >wildcard Query (From: ISHIMOTO Ken <email@hidden>)
 >Re: wildcard Query (From: Farrukh Ijaz <email@hidden>)
 >Re: wildcard Query (From: ISHIMOTO Ken <email@hidden>)
 >Re: wildcard Query (From: Farrukh Ijaz <email@hidden>)
 >Re: wildcard Query (From: ISHIMOTO Ken <email@hidden>)
 >Re: wildcard Query (From: "Cheong Hee (Gmail)" <email@hidden>)
 >Re: wildcard Query (From: Mark Wardle <email@hidden>)

  • Prev by Date: Splitting an EOModel
  • Next by Date: Re: Scala and WebObjects
  • Previous by thread: Re: wildcard Query
  • Next by thread: Re: wildcard Query
  • Index(es):
    • Date
    • Thread