Sorting a list with parent/child object relations
Hi,
I have an ArrayList of Genre objects that I want to sort:
class Genre{
int CategoryID;
int ParentCategoryID;
String name;
String level;
Example objects:
Pop (CategoryID=10, ParentCategoryID=root, "popular music", 1);
Jazz (CategoryID=11, ParentCategoryID=root, "jazz music", 1);
Indie pop (CategoryID=12, ParentCategoryID=10, "indie pop", 2);
American Indie pop (CategoryID=13, ParentCategoryID=12, "american indie pop", 3);
Soul (CategoryID=15, ParentCategoryID=root, "soul music", 1);
Commercial pop (CategoryID=14, ParentCategoryID=10, "commercial pop", 2);
I hope that you see the point:
I want that the order will be like this in my arraylist:
jazz music
popular music
commercial pop
indie pop music
american indie pop
soul music
I'll implement the comparator-class in Genre and then add the compareTo-method in my genre-class.
But my brain is too tired to figure out what to write in the compareTo-method?
Have somebody done a similar method??
Best regards,
Thomas
Unfortunately is this solution not plausible since I
don't can have the parent genre in the genre class.
... Hashmap?Hashmap works. Here you go, using your structure, minus the level, I'm sure you can work around that though. Don't use -1 as a category id, it's reserved for your root. This code is not thread safe, I leave that to you. Don't forget that as implemented, parent Genres must be constructed prior to any of their children. You could get around this with a two pass initialization process.
// Not thread safe.
import java.util.*;
public class Genre implements Comparable {
private static Map<Integer, Genre> genreForId = new HashMap<Integer, Genre>();
private int id;
private int level;
private int parentId;
private String name;
public Genre(int id, int parentId, String name) {
this.id = id;
this.parentId = parentId;
this.name = name;
this.level = level(this);
Genre.genreForId.put(id, this);
private static int level(Genre genre) {
int i = 0;
while (genre != null) {
genre = genre.getParent();
i++;
return i;
public static void main(String[] args) {
Genre pop = new Genre(10, -1, "popular music");
Genre jazz = new Genre(11, -1, "jazz music");
Genre indiePop = new Genre(12, 10, "indie pop");
Genre americanIndiePop = new Genre(13, 12, "american indie pop");
Genre soul = new Genre(15, -1, "soul music");
Genre commercialPop = new Genre(14, 10, "commercial pop");
Genre[] genres = { pop, jazz, indiePop, americanIndiePop, soul,
commercialPop };
Arrays.sort(genres);
System.out.println(Arrays.toString(genres));
public int compareTo(Object o) {
Genre lhs = this;
Genre rhs = (Genre) o;
switch (Integer.signum(lhs.getLevel() - rhs.getLevel())) {
case -1:
rhs = rhs.getParent();
if (lhs == rhs)
return -1;
break;
case 0:
if (lhs == rhs)
return 0;
else {
if (lhs.getParent() == rhs.getParent())
return lhs.getName().compareTo(rhs.getName());
else {
lhs = lhs.getParent();
rhs = rhs.getParent();
break;
case 1:
lhs = lhs.getParent();
if (lhs == rhs)
return 1;
return lhs.compareTo(rhs);
public int getLevel() {
return level;
public String getName() {
return name;
public Genre getParent() {
return Genre.genreForId.get(getParentId());
public int getParentId() {
return parentId;
public String toString() {
return name;
}-S
Similar Messages
-
Sorting a List on Parent Child Relationship
I have to sort a list on Parent Child relation
say
I have a following list
Object(Id,ParentId,.........)
obj1(1,1,........);
obj2(2,1,........);
obj3(3,3,........);
obj4(4,1,........);
obj5(5,3,........);
obj6(6,1,........);
obj7(7,3,........);
obj8(8,4,........);
Logic is such that
If Id and Parent Id is same then It is Parent Record
I want the Result like
obj1(1,1,........);
obj2(2,1,........);
obj4(4,1,........);
obj6(6,1,........);
obj3(3,3,........);
obj5(5,3,........);
obj7(7,3,........);
obj8(8,4,........);
Suggect Some Logic...............
Thanks in advance.............sAsho wrote:
That's the question how to do that?????????????????????????One question mark is sufficient. If you're going to go out of your way to write like an idiot, people won't take you seriously.
"How do I do that?" is way to broad a question. You need to do some research, take your best shot, and post a specific question about the specific parts that are giving you trouble.
Suggest something. I did suggest something.
I suggested what you should google for to get you started. Just like writing clearly and intelligently, if you can't be bothered to read what people suggest and put in the effort to follow that suggestion and do your own research, you'll find people will quickly lose interest in trying to help you.
Now I am additionally suggesting that you 1) pay closer attention and 2) do your own research.
Recurcive sort kind of a think.................No idea what you're saying here. See my first point in this reply. -
Create dynamic list (DHTML list) with parent child
Hi,
I am new to APEX.
I have manually created DHTML list using lists in APEX. I want to create it dynamically using tables.
I tried but not worked for me.
i choose DHTML list because i want it in (+) sign when click on it all sub list entries should be displayed
and also wanted to create something like when user click on one particular sub entry it should be saved in database
with other fields of table.
Was just wondering if any one came across this sort of query or design.
Thanks in Advance
Regards,
Digisha>>
plz help me to make this page work with ajax
>>
the form page you mean, right ? well, even if I could provide
a solution
(ajax respectively the CS3 spry stuff is rather new to me right
now), this wouldn´t make sense to the form page anyway,
because, after performing an insert/update/delete transaction, ADDT
will always redirect to another page
(your list probably) you specified when setting up the form.
ADDT lists and forms are by default separated, and there is
no mechanism provided to have both functionalities available on the
same page -- it´s that what you meant ? -
Update column with parent child relationships
Hi,
i need to update a column with parent child relationship.
Please provide the possible queries..
Gobi..Hi,
Depending of the objective and the size of the tables, personally, for maintenance purposes, I preferred duplicate the parent with the new column value and duplicate the child records with this same new value. Other alternative is disable the foreign key temporarily.
You can take a look on this link below too:
http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:5773459616034
Cheers -
Insert Record with Parent/Child Tables doesn't work with Oracle - unlike AC
Hi,
I just Migrated a MS Access 2010 Database to an Oracle 11g Backend with the SQL Developer Tool.
The Migration went fine, all the Tables and Views are migrated.
I'm working with MS Access as Frontend.
The application has some Datasheets with Subdatasheets with Parent/Child Relationship. (1-n Relationship)
After changing to Oracle, it's not possible, to Insert a new Record in a Subdatasheet I always get the following Error Message:
"The Microsoft Access database engine cannot find a record in the table 'xxxx' with key matching field(s) 'zzzzz'"
It used to work perfect with the MS Access Backend, do I need a trigger which first adds the child Record ?
Or what should I do?
Thank youHi Klaus,
Thanks for your answer. I still haven't solved my problem. The only way would be to use a singel 1:n Relationship, but in fact I need a n:m Relationship.
I tried the same scenario with a new Access Application, same result.
To clearify my problem.
Goal: Parent Form with Parent Records, Linked Child Form with Child Records in a Datasheet View => Insert of a NEW Child Record.
I have 3 Tables (table1 = Parent tabel, table2 = Child Table, table12 = n:m Tabel with PK and two FK)
The Recordsource of the Parent Form is Tabel1
The Recordsource of the Child Form is Table2 joined with Table12.
In my Old Access Project, Access Triggered the Insert and filled Table12 with the NEW PK of Table2.
It seems like Access can't do that anymore....
I'm pretty desperate and I'm sure it is just a litte thing to fix..... -
How can provide parent-child nodes relation ships?
how can provide parent-child nodes relation ships?
I was under the impression that scenegraph is like a JTree. But in JavaFX only leaf node rendering in scenegraph. This situation was confusing my mind. In JavaFX CustomNode must be extending and return a group for custom leaf. If we want to a create parent-child node hierarchy we are create CustomNode that return a group and this group contain an another group,etc. So there is maybe only a way. If you learning to JavaFX first time.This way don't look familiar.
-
Error with Parent-Child Hierarchies in BIEE11.1.1.5
Hi ,
I am using BIEE11.1.1.5, I have created a Logical Dimensions with Parent-Child Hierarchies,
In answer,I draged the Hierarchies named 'H5 Sales Rep', then view the results,
It has error,error message as follows:
Odbc driver returned an error (SQLExecDirectW).
Error Details
Error Codes: OPR4ONWY:U9IM8TAC:OI2DL65P
State: HY000. Code: 10058. [NQODBC] [SQL_STATE: HY000] [nQSError: 10058] A general error has occurred. [nQSError: 43113] Message returned from OBIS. [nQSError: 43119] Query Failed: [nQSError: 22056] To use hierarchical functions, you need to associate a Closure Table with Logical Table Source 'LTS1 Sales Rep'. (HY000)
SQL Issued: SELECT 0 s_0, "Sample Sales"."Sales Rep"."Sales Rep Name" s_1, CASE WHEN ISLEAF("Sample Sales"."Sales Rep"."H5 Sales Rep") THEN 1 ELSE 0 END s_2, IDOF("Sample Sales"."Sales Rep"."H5 Sales Rep") s_3, PARENT("Sample Sales"."Sales Rep"."H5 Sales Rep") s_4 FROM "Sample Sales" WHERE ISROOT("Sample Sales"."Sales Rep"."H5 Sales Rep")
anyone know why???
Thank you!Hi Leo,
Did you configure closure table? http://www.rittmanmead.com/2010/11/oracle-bi-ee-11g-parent-child-hierarchies-multiple-modeling-methods/
Also make sure to perform the hierarchy changes in offline mode.
Regards,
Dpka -
Revision: 18926
Revision: 18926
Author: [email protected]
Date: 2010-12-01 14:07:19 -0800 (Wed, 01 Dec 2010)
Log Message:
bug fix BLZ-570 Double linked list with lot of objects result in BlazeDS Error deserializing error : StackOverflowError
We put hard limit to the max object nest level to prevent StackOverFlowError. the default max object nest level is 1024 and it can be configured in the endpoint/serialziation section in service-config.xml.
This needs documentation.
Checkintests pass
Ticket Links:
http://bugs.adobe.com/jira/browse/BLZ-570
Modified Paths:
blazeds/trunk/modules/common/src/flex/messaging/errors.properties
blazeds/trunk/modules/core/src/flex/messaging/endpoints/AbstractEndpoint.java
blazeds/trunk/modules/core/src/flex/messaging/io/SerializationContext.java
blazeds/trunk/modules/core/src/flex/messaging/io/amf/Amf0Input.java
blazeds/trunk/modules/core/src/flex/messaging/io/amf/Amf3Input.java
blazeds/trunk/modules/core/src/flex/messaging/io/amf/AmfIO.java -
Revision: 20451
Revision: 20451
Author: [email protected]
Date: 2011-02-24 08:33:31 -0800 (Thu, 24 Feb 2011)
Log Message:
backporting bug fix BLZ-570/BLZ-620 Double linked list with lot of objects result in BlazeDS Error deserializing error : StackOverflowError We put hard limit to the max object nest level to prevent StackOverFlowError. the default max object nest level is 1024 and it can be configured in the endpoint/serialziation section in service-config.xml. This needs documentation. Checkintests pass
Ticket Links:
http://bugs.adobe.com/jira/browse/BLZ-570
http://bugs.adobe.com/jira/browse/BLZ-620
Modified Paths:
blazeds/branches/4.0.0_fixes/modules/common/src/flex/messaging/errors.properties
blazeds/branches/4.0.0_fixes/modules/core/src/flex/messaging/endpoints/AbstractEndpoint.j ava
blazeds/branches/4.0.0_fixes/modules/core/src/flex/messaging/io/SerializationContext.java
blazeds/branches/4.0.0_fixes/modules/core/src/flex/messaging/io/amf/Amf0Input.java
blazeds/branches/4.0.0_fixes/modules/core/src/flex/messaging/io/amf/Amf3Input.java
blazeds/branches/4.0.0_fixes/modules/core/src/flex/messaging/io/amf/AmfIO.javaDear Pallavi,
Very useful post!
I am looking for similar accelerators for
Software Inventory Accelerator
Hardware Inventory Accelerator
Interfaces Inventory
Customization Assessment Accelerator
Sizing Tool
Which helps us to come up with the relevant Bill of Matetials for every area mentioned above, and the ones which I dont know...
Request help on such accelerators... Any clues?
Any reply, help is highly appreciated.
Regards
Manish Madhav -
Revision: 20443
Revision: 20443
Author: [email protected]
Date: 2011-02-23 21:19:22 -0800 (Wed, 23 Feb 2011)
Log Message:
back porting bug fix BLZ-570/BLZ-620 Double linked list with lot of objects result in BlazeDS Error deserializing error : StackOverflowError We put hard limit to the max object nest level to prevent StackOverFlowError. the default max object nest level is 1024 and it can be configured in the endpoint/serialziation section in service-config.xml. This needs documentation. Checkintests pass
Ticket Links:
http://bugs.adobe.com/jira/browse/BLZ-570
http://bugs.adobe.com/jira/browse/BLZ-620
Modified Paths:
blazeds/branches/3.x/modules/common/src/java/flex/messaging/errors.properties
blazeds/branches/3.x/modules/core/src/java/flex/messaging/endpoints/AbstractEndpoint.java
blazeds/branches/3.x/modules/core/src/java/flex/messaging/io/SerializationContext.java
blazeds/branches/3.x/modules/core/src/java/flex/messaging/io/amf/Amf0Input.java
blazeds/branches/3.x/modules/core/src/java/flex/messaging/io/amf/Amf3Input.java
blazeds/branches/3.x/modules/core/src/java/flex/messaging/io/amf/AmfIO.java -
Dimension with Parent-Child Hierarchy - not working
hi,
i tried making "Dimension with Parent-Child Hierarchy" as described in your tutorials.
i finished with the admin tool and database changes and with no errors.
when trying to create a new answer, by only puting the hierarchy column in the answer.
the result show "no result" exist.
i am not sure what i am doing wrong. maybe you can point me to the problem?
thanks
Mirit.956850 wrote:
hi,
i tried making "Dimension with Parent-Child Hierarchy" as described in your tutorials.
i finished with the admin tool and database changes and with no errors.
when trying to create a new answer, by only puting the hierarchy column in the answer.
the result show "no result" exist.
i am not sure what i am doing wrong. maybe you can point me to the problem?
thanks
Mirit.Hi Mirit,
What is the table that you created hierarchy on?
Which column in the hierarchy you pulled into your reports to see the No Result message?
Please query the table and see if has data.
Thanks,
G. SK -
Sorting a list of different class objects
Hi All ,
How to sort a List a.which contains objects of different Classes, b. objects of same class . Is it possible to sort these by implementing Comparable interface .
Thanks ,
Rajesh Reddyrajeshreddyk wrote:
Hi All ,
How to sort a List a.which contains objects of different Classes, b. objects of same class . Is it possible to sort these by implementing Comparable interface .Well, if objects of different classes are kept in the same List and you want to sort them together they at least have that in common. They're Comparable-able. -:) To manifest that the different classes could all implement a Comparableable interface (or maybe Intercomparable would be a better choise of name.) -
Union on tables with parent-child records and Sorting
Hi,
I have an application that has an existing query which returns org units (parent and child) from organization table with a sort on createddate + org_id combination
WITH Org_TREE AS (
SELECT *, null as 'IS_DELETED', convert (varchar(4000), convert(varchar(30),CREATED_DT,126) + Org_Id) theorderby
FROM Organization WHERE PARENT_Org_ID IS NULL and case_ID='43333'
UNION ALL
SELECT a1.*, null as 'IS_DELETED', convert (varchar(4000), a2.theorderby + convert(varchar(30),a1.CREATED_DT,126) + a1.Org_Id)
FROM Organization a1 INNER JOIN Org_TREE a2 ON a1.PARENT_Org_ID = a2.Org_Id and case_ID='43333'
SELECT * FROM Org_TREE order by theorderby
I have created a new log table for organization 'Organization_Log' with exact columns as Organization table with an additional 'IS_DELETED' bool column.
Questions:
I need to modiy the query,
1. To display the parent and child records both from the organization table and organization_log table.
2. the sort on the result should be based on 'Organization Name' column asc. First with parent org and the child org underneath it. For eg.
aaa
==>fff
==>ggg
bbb
==> aaa
==> hhh
Any help on how the query should be constructed?
Thanks
gkol@Visakh16,
I am getting...
All queries combined using a UNION, INTERSECT or EXCEPT operator must have an equal number of expressions in their target lists.
The problem is that you will have different number of columns in both log and Organization and Organizationlog tables. UNION/UNION ALL expect the same number of columns.
Try the below:
WITH Org_Log_TREE AS (
SELECT Organization_name,Org_id,Parent_Org_id, IS_DELETED, CAST(Organization_Name AS varchar(max)) AS theorderby,1 AS level
FROM Organization_Log WHERE PARENT_Org_ID IS NULL and case_ID='43333'
UNION ALL
SELECT a1.Organization_name,a1.Org_id,a1.Parent_Org_id, a1.IS_DELETED, CAST(a2.theorderby +'/' + CAST(a1.Organization_Name AS varchar(1000)) AS varchar(max)),a2.Level + 1
FROM Organization_Log a1 INNER JOIN Org_Log_TREE a2 ON a1.PARENT_Org_ID = a2.Org_Id and case_ID='43333'
) ,Org_TREE AS (
SELECT Organization_name,Org_id,Parent_Org_id, NULL AS IS_DELETED, CAST(Organization_Name AS varchar(max)) AS theorderby,1 AS level
FROM Organization WHERE PARENT_Org_ID IS NULL and case_ID='43333'
UNION ALL
SELECT a1.Organization_name,a1.Org_id,a1.Parent_Org_id,NULL AS IS_DELETED, CAST(a2.theorderby +'/' + CAST(a1.Organization_Name AS varchar(1000)) AS varchar(max)),a2.Level + 1
FROM Organization a1 INNER JOIN Org_TREE a2 ON a1.PARENT_Org_ID = a2.Org_Id and case_ID='43333'
SELECT * FROM Org_Log_TREE
UNION ALL
SELECT * FROM Org_TREE
ORDER BY LEFT(theorderby,CHARINDEX('/',theorderby + '/')-1),Level -
Creating View for a table with parent child relation in table
I need help creating a view. It is on a base table which is a metadata table.It is usinf parent child relationship. There are four types of objects, Job, Workflow, Dataflow and ABAP dataflow. Job would be the root parent everytime. I have saved all the jobs
of the project in another table TABLE_JOB with column name JOB_NAME. Query should iteratively start from the job and search all the child nodes and then display all child with the job name. Attached are the images of base table data and expected view data
and also the excel sheet with data.Picture 1 is the sample data in base table. Picture 2 is data in the view.
Base Table
PARENT_OBJ
PAREBT_OBJ_TYPE
DESCEN_OBJ
DESCEN_OBJ_TYPE
JOB_A
JOB
WF_1
WORKFLOW
JOB_A
JOB
DF_1
DATAFLOW
WF_1
WORKFLOW
DF_2
DATAFLOW
DF_1
DATAFLOW
ADF_1
ADF
JOB_B
JOB
WF_2
WORKFLOW
JOB_B
JOB
WF_3
WORKFLOW
WF_2
WORKFLOW
DF_3
DATAFLOW
WF_3
WORKFLOW
DF_4
DATAFLOW
DF_4
DATAFLOW
ADF_2
ADF
View
Job_Name
Flow_Name
Flow_Type
Job_A
WF_1
WORKFLOW
Job_A
DF_1
DATAFLOW
Job_A
DF_2
DATAFLOW
Job_A
ADF_1
ADF
Job_B
WF_2
WORKFLOW
Job_B
WF_3
WORKFLOW
Job_B
DF_3
DATAFLOW
Job_B
DF_4
DATAFLOW
Job_B
ADF_2
ADF
I implemented the same in oracle using CONNECT_BY_ROOT and START WITH.
Regards,
MeghaI think what you need is recursive CTE
Consider your table below
create table basetable
(PARENT_OBJ varchar(10),
PAREBT_OBJ_TYPE varchar(10),
DESCEN_OBJ varchar(10),DESCEN_OBJ_TYPE varchar(10))
INSERT basetable(PARENT_OBJ,PAREBT_OBJ_TYPE,DESCEN_OBJ,DESCEN_OBJ_TYPE)
VALUES('JOB_A','JOB','WF_1','WORKFLOW'),
('JOB_A','JOB','DF_1','DATAFLOW'),
('WF_1','WORKFLOW','DF_2','DATAFLOW'),
('DF_1','DATAFLOW','ADF_1','ADF'),
('JOB_B','JOB','WF_2','WORKFLOW'),
('JOB_B','JOB','WF_3','WORKFLOW'),
('WF_2','WORKFLOW','DF_3','DATAFLOW'),
('WF_3','WORKFLOW','DF_4','DATAFLOW'),
('DF_4','DATAFLOW','ADF_2','ADF')
ie first create a UDF like below to get hierarchy recursively
CREATE FUNCTION GetHierarchy
@Object varchar(10)
RETURNS @RESULTS table
PARENT_OBJ varchar(10),
DESCEN_OBJ varchar(10),
DESCEN_OBJ_TYPE varchar(10)
AS
BEGIN
;With CTE
AS
SELECT PARENT_OBJ,DESCEN_OBJ,DESCEN_OBJ_TYPE
FROM basetable
WHERE PARENT_OBJ = @Object
UNION ALL
SELECT b.PARENT_OBJ,b.DESCEN_OBJ,b.DESCEN_OBJ_TYPE
FROM CTE c
JOIN basetable b
ON b.PARENT_OBJ = c.DESCEN_OBJ
INSERT @RESULTS
SELECT @Object,DESCEN_OBJ,DESCEN_OBJ_TYPE
FROM CTE
OPTION (MAXRECURSION 0)
RETURN
END
Then you can invoke it as below
SELECT * FROM dbo.GetHierarchy('JOB_A')
Now you need to use this for every parent obj (start obj) in view
for that create view as below
CREATE VIEW vw_Table
AS
SELECT f.*
FROM (SELECT DISTINCT PARENT_OBJ FROM basetable r
WHERE NOT EXISTS (SELECT 1
FROM basetable WHERE DESCEN_OBJ = r.PARENT_OBJ)
)b
CROSS APPLY dbo.GetHierarchy(b.PARENT_OBJ) f
GO
This will make sure it will give full hieraracy for each start object
Now just call view as below and see the output
SELECT * FROM vw_table
Output
PARENT_OBJ DESCEN_OBJ DESCEN_OBJ_TYPE
JOB_A WF_1 WORKFLOW
JOB_A DF_1 DATAFLOW
JOB_A ADF_1 ADF
JOB_A DF_2 DATAFLOW
JOB_B WF_2 WORKFLOW
JOB_B WF_3 WORKFLOW
JOB_B DF_4 DATAFLOW
JOB_B ADF_2 ADF
JOB_B DF_3 DATAFLOW
Please Mark This As Answer if it helps to solve the issue Visakh ---------------------------- http://visakhm.blogspot.com/ https://www.facebook.com/VmBlogs -
Request help to display a list with parent and child list item.
I created a static list with items A,B,C and a child item A1 under parent A. I chose the template "vertical Side bar list". I am using theme 10 (sand) for my application. I created page 0 and am displaying the list on page template region position2. I am able to see the side bar with options A,B,C. But am not able to see the child option A1 when I click on Option A. I tried using 'DHTML MENU WITH SUB LIST' but When I click on option A, the child entry A1 is showing over the B and C options. I know this might be a pretty basic functionality. I am new to APEX and am just learning. I appreciate any help you give me.
Mr.Backstrom,
I have changed the list template overide to dhtml Tree. And now the list is being displayed as vertical unordered list with bullets. Is it possible to take off the bullets? Thank you for your time.
Suma.
Maybe you are looking for
-
Background posting in MIGO using 501 E movement type
Hi Experts, I do have a requirement in which I have to post excess quantity to same batch , storage location and under same grid value by movement type 501 E after posting with 101 movement type is done. I do need that after creation of a
-
When I click on 'iTunes Store' I get a "iTues has stopped working" message. Why?
. . .then I have to close iTunes.
-
OBIEE 11G - Creation of Parent child hirarchy
We need to create a parent child hierarchy for city wise branches In our DB we have only one table - the same we need to consider as Dimension & Fact. Attributes as follows: customername, customernumber, accountnumber,city, branch, financialyear,fina
-
Warning: xf86-video-nouveau 0.0.15_git20100117-1 may rename outputs
After this nouveau update, when I next started X, I no longer had two monitors side-by-side, but instead had them in mirrored mode. A little investigation showed that my outputs were renamed: DVI-I-0 -> DVI-I-1 VGA-0 -> VGA-1 This broke my xrandr con
-
Get synced photos in order of date
I've just synced my iPhone with my Aperture library for the first time. I used to sync it with iPhoto. I never had a problem getting my albums (projects) in order of date since I managed them manually. Now.... I have my folders organized in years (20